我真的很困惑。
有时这个标志工作正常
sed -e 's/dd//gp' file
有时我需要使用
sed -re 's/dd//gp' file
有时候这个
sed -ren 's/dd//gp' file
有时候
sed -n 's/dd//gp' file
刚才我试图压制出局,但我一直跟着-ren
旗帜
上周为其他正则表达式工作
现在我只能使用-n
来抑制输出
组合之间有什么区别
我有这个共同点
sed -n 's/\/\*\*//gp' file
适用于-n
但不适用于-en
答案 0 :(得分:2)
您可以使用man sed
来确定sed
的各种标志的用途。
仅在向-e
指定多个引用块时才需要sed
标志。
echo "foo" | sed 's/foo/bar/'
=> bar
echo "foo" | sed -e 's/foo/bar/' -e 's/bar/baz/'
=> baz
-r
标记扩展sed
的正则表达式以使用扩展正则表达式。
echo "foo" | sed 's/f??/bar/'
=> foo
echo "foo" | sed -r 's/f??/bar/'
=> baroo
-n
标志不会抑制输出,而是抑制模式空间中任何内容的自动输出。如果您使用p
或s///p
标记,那么打印仍会显式发生并产生输出。
例如:
echo "foo" | sed ''
=> foo
echo "foo" | sed -n ''
=>
echo "foo" | sed -n 'p'
=> foo
echo "foo" | sed -n 's/foo/bar/p'
=> bar
如果您想取消sed
的输出,可以将STDOUT
和STDERR
重定向到/dev/null
,如下所示:
sed '<commands>' &>/dev/null
有关sed
的简介,请参阅this视频系列。