cra*_*rog 14 unix sed pattern-matching
我
正在
使用
基本
SED
表达: -
sed -n "am/,/sed/p"
Run Code Online (Sandbox Code Playgroud)
获取"am"和"sed"之间的文本,它将输出"am \n using \n basic \n sed".但我真正的问题是如果字符串是: -
我
正在
使用
基本的
grep
表达式.
我在这句话中应用了上面的sed然后它给了"我用\n基本\n grep \n表达式",它不应该给它.如果没有匹配,如何丢弃输出?
有什么建议?
bmk*_*bmk 13
问题中的命令(sed -n "/am/,/sed/p"注意添加的斜杠)表示:
amp),直到含有线sed发生因此它打印:
I am using basic grep expression
Run Code Online (Sandbox Code Playgroud)
因为它包含am.如果你要添加更多的线条,它们也将被打印,直到出现包含线条为止sed.
例如:
echo -e 'I am using basic grep expression.\nOne more line\nOne with sed\nOne without' | sed -n "/am/,/sed/p"
Run Code Online (Sandbox Code Playgroud)
结果是:
I am using basic grep expression.
One more line
One with sed
Run Code Online (Sandbox Code Playgroud)
我想 - 你想做的是这样的:
sed -n "s/.*\(am.*sed\).*/\1/p"
Run Code Online (Sandbox Code Playgroud)
例:
echo 'I am using basic grep expression.' | sed -n "s/.*\(am.*sed\).*/\1/p"
echo 'I am using basic sed expression.' | sed -n "s/.*\(am.*sed\).*/\1/p"
sed -n "s/.*\(am.*sed\).*/\1/p"
Run Code Online (Sandbox Code Playgroud)