sed +如何通过sed获取"="分隔符之后的第二个单词(字符串)

lid*_*dia 8 sed

如何获取sed之后的"="分隔符后的第二个单词(字符串)(需要忽略空格)

例如

   echo " bla bla word word1 = strin1 string2 " | sed .....
Run Code Online (Sandbox Code Playgroud)

我应该得到string2

另一个例子

    echo " bla bla word word1 =swhsw 123  " | sed .....
Run Code Online (Sandbox Code Playgroud)

我应该得到123

And*_*ers 12

我相信这awk是一个更好的解决方案,只需使用.

echo "bla bla word word1 = strin1 string2" | awk -F"=" '{print $2}' | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 6

$ echo " bla bla word word1 = strin1 string2 " | sed 's/.[^=]*=\(.[^ \t]*\)[ \t]*\(.[^ \t]*\)\(.*\)/\2/'
string2


$ echo " bla bla word word1 =swhsw 123  " | awk -F"=" '{split($2,a," ");print a[2]}'
123
Run Code Online (Sandbox Code Playgroud)

你怎么开始阅读如何使用sed/awk


Lyo*_*eel 5

这个答案是纯粹的 GNU SED:

export text=" bla bla word word1 = string1 string2 string3 ";
echo "$text" | sed 's/.*= \?[a-zA-Z0-9]* \([a-zA-Z0-9]*\).*/\1/';
Run Code Online (Sandbox Code Playgroud)

我稍微改变了字符串,因为可能有更多单词,如果该单词不是最后一个,规则就会改变。

让我们解释一下:

  1. .*=: 等号之前的所有字符。
  2. .*= /?:这是主要部分,等于后我留了一个空格,然后我放了/?,这意味着出现一次或零次,不知道你是否会在这里留一个空格。
  3. [a-zA-Z0-9]*az AZ 0-9 中出现的所有单词(字符串 1)。
  4. \([a-zA-Z0-9]*\)再次获取 a-zA-z0-9 的所有出现次数,即第二个单词。
  5. \).*所有其他的东西。
  6. /\1/将输出您之间的所有内容\(\)。

我希望这对某人有帮助。