在sed这是什么意思?

时间:2014-11-10 10:49:49

标签: sed

任何人都可以告诉以下代码在bash shell脚本中表示什么?

sed -n 's/^.*\([Mm][Ss]_[^ ]*\).*/\1/p'

1 个答案:

答案 0 :(得分:0)

如果你有这个文字:

cat file
her ms_45 are you
MS_boat by ms US
What Ms_time are you

您将获得以ms_不区分大小写开头的所有单词。

sed -n 's/^.*\([Mm][Ss]_[^ ]*\).*/\1/p' file
ms_45
MS_boat
Ms_time

sed甚至可以将某些内容从sed -n 's/^.*\([Mm][Ss]_[^ ]*\).*/\1/p'缩短为:

sed -nr 's/.*([Mm][Ss]_[^ ]*).*/\1/p'

-r(正则表达式),您无需转义() 不需要第一个^(行首),因为.*抓住了它。


您也可以使用grep(更简单易懂):

grep -o '[Mm][Ss]_[^ ]*' file
ms_45
MS_boat
Ms_time

获取以下所有字词:( Mm)和(Ss)和_以及所有字符,直到找到空格{ {1}}

PS [^ ]*只会获得每一行的第一个sed,但ms_..会全部获得。