小编fre*_*ass的帖子

如何使 sed 省略不匹配的行?

在以下示例中,sed匹配以 ana或 a开头的行c并打印该行的第一个字符 ( aor c):

$ echo "ag
bh
ci
dj
ek
fl" | sed 's/\(a\|c\)./\1/' # Matches lines starting with 'a' or 'c'.

output:
a
bh
c
dj
ek
fl
Run Code Online (Sandbox Code Playgroud)

但是,与模式不匹配的行也会被打印出来。我如何告诉sed省略与模式不匹配的行?我可以通过将其与grep(如下)结合来获得所需的效果,但我想知道是否sed可以“单独”实现。

$ echo "ag
bh
ci
dj
ek
fl" | grep '[ac]' | sed 's/\(a\|c\)./\1/'

output:
a
c
Run Code Online (Sandbox Code Playgroud)

regex sed bash-scripting

8
推荐指数
1
解决办法
2060
查看次数

标签 统计

bash-scripting ×1

regex ×1

sed ×1