任何人都可以告诉以下代码在bash shell脚本中表示什么?
sed -n 's/^.*\([Mm][Ss]_[^ ]*\).*/\1/p'
答案 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
获取以下所有字词:( M
或m
)和(S
或s
)和_
以及所有字符,直到找到空格{ {1}}
PS [^ ]*
只会获得每一行的第一个sed
,但ms_..
会全部获得。