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

时间:2010-07-22 11:19:12

标签: sed

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

例如

   echo " bla bla word word1 = strin1 string2 " | sed .....

我应该得到string2

另一个例子

    echo " bla bla word word1 =swhsw 123  " | sed .....

我应该得到123

3 个答案:

答案 0 :(得分:12)

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

echo "bla bla word word1 = strin1 string2" | awk -F"=" '{print $2}' | awk '{print $2}'

答案 1 :(得分: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

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

答案 2 :(得分:3)

这个答案纯粹是GNU SED:

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

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

让我们解释一下:

  1. .*=:等号前的所有字符。
  2. .*= /?:这是主要部分,等于我留空 空间和我把/?,这意味着一个或零的发生,不知道 如果你在这里留一个空间。
  3. [a-zA-Z0-9]* a-z A-Z 0-9的所有发生,单词(string1)。
  4. \([a-zA-Z0-9]*\)再次获得a-zA-z0-9的所有货币,第二个字。
  5. \).*所有其他的东西。
  6. /\1/将输出您在\(\)。
  7. 之间的所有内容

    我希望这有助于某人。