Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Bash:将字符串变量更改为以开头的第一个单词_String_Bash - Fatal编程技术网

String Bash:将字符串变量更改为以开头的第一个单词

String Bash:将字符串变量更改为以开头的第一个单词,string,bash,String,Bash,我试图隔离以enp开头的第一个接口 例如: foo = "bar0s0 foo0s8 enp0s0" startword = "enp" 结果: $foo = enp0s0 下面是一个使用awk的解决方案,可根据您的需要进行修改: echo "bar0s0 foo0s8 enp888 enp0s0" | awk ' { for(i = 1; i <= NF; i++) if($i ~ "enp") { print $i; break;} } ' echo“bar0s0 foo0s

我试图隔离以enp开头的第一个接口

例如:

foo = "bar0s0 foo0s8 enp0s0"
startword = "enp"
结果:

$foo = enp0s0

下面是一个使用awk的解决方案,可根据您的需要进行修改:

 echo "bar0s0 foo0s8 enp888  enp0s0" | awk ' { for(i = 1; i <= NF; i++) if($i ~ "enp") { print $i; break;} } '

echo“bar0s0 foo0s8 enp888 enp0s0”| awk'{for(i=1;i您将您的问题标记为bash,因此我将提供一个简单、可移植的解决方案

因为你没有为你的问题提供背景,所以很难确定什么是最好的方法,但在大多数情况下,这应该可以做到

bash>bash --version
GNU bash, version 3.2.52(2)-release (i586-suse-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
bash>foo="bar0s0 foo0s8 enp0s0 random word123"
bash>startword="enp"
bash>index=$(expr index "$foo" $startword)
bash>echo ${foo:$(($index -1)):6}
enp0s0
有几个注意事项:

  • 这假设您实际上正在使用bash,并且您的工具有些有限
  • 这还假设接口名称始终为6个字符

  • 这种方法使用子字符串提取,如果您想了解它,请查看bash中的

    errr?还有您尝试过什么?一般来说,最好使用数组,
    words=(bar0s0 foo0s8 enp0s0)
    。errr,尽管我理解您的意思:-)我不知道他是从哪里捕获单词的。数组肯定更容易,是的,但如果您首先生成列表,就不容易了。虽然这个代码片段可能会解决问题,但它没有解释为什么或如何回答问题。请注意,这确实有助于提高您的帖子质量。请记住,您回答的是问题供将来的读者阅读,这些人可能不知道您的代码建议的原因。标记者/审阅者:
     echo "bar0s0 foo0s8 enp888  enp0s0" | awk ' { for(i = 1; i <= NF; i++) if($i ~ "enp") { print $i; break;} } '
    
    bash>bash --version
    GNU bash, version 3.2.52(2)-release (i586-suse-linux-gnu)
    Copyright (C) 2007 Free Software Foundation, Inc.
    bash>foo="bar0s0 foo0s8 enp0s0 random word123"
    bash>startword="enp"
    bash>index=$(expr index "$foo" $startword)
    bash>echo ${foo:$(($index -1)):6}
    enp0s0