Linux 结合两个相互依赖的命令的sed命令
我需要一个sed命令的帮助,该命令将生日行复制到标准输出,删除所有以“a”开头的行。 假设我的sample.txt文件如下所示:Linux 结合两个相互依赖的命令的sed命令,linux,shell,sed,editor,Linux,Shell,Sed,Editor,我需要一个sed命令的帮助,该命令将生日行复制到标准输出,删除所有以“a”开头的行。 假设我的sample.txt文件如下所示: A birthday is very much celebrated. Today is my birthday. I can celebrate my birthday. A man can do anything. 这是示例输出: 今天是我的生日。 我可以庆祝我的生日 因此,对于生日系列: sed -n /birthday/p sample.txt 对于删
A birthday is very much celebrated.
Today is my birthday.
I can celebrate my birthday.
A man can do anything.
这是示例输出:
今天是我的生日。我可以庆祝我的生日 因此,对于生日系列:
sed -n /birthday/p sample.txt
对于删除以“A”开头的行:
现在,我不知道如何组合这两行,以便它们可以根据问题工作。您需要的是|
。它从左侧获取命令的输出,并通过将STDOUT连接到STDIN将其“管道”到右侧的命令
因此,在您的情况下,您应该:
sed-n/birthday/p sample.txt | sed-n'/^A/!p'
编辑:使用sed格式化,不需要管道-在打印包含“生日”的行之前,可以删除以“A”开头的行: 或者使用sed的默认打印操作(不通过
-n
选项禁用):删除不包含“生日”的行。任何未被删除的行都将打印到标准输出
sed '/^A/d; /birthday/!d' file
使用此方法,可以在不影响逻辑的情况下交换地址顺序:/birth/!d/^A/d
产生相同的输出。这可能适合您(GNU-sed):
如果一行以a
开头,则删除该行,并删除没有生日的任何其他行
或:
打印不以
A
开头且包含birth
的行。请将示例输入(无描述、无图像、无链接)和您希望的输出添加到您的问题中(无评论)。好的,我现在编辑了我的问题。这可能会有帮助:sed'/^[^A].*birth/!d'文件
sed -n '/^A/d; /birthday/p' file
sed '/^A/d; /birthday/!d' file
sed '/^A/d;/birthday/!d' file
sed -n '/^[^A].*birthday/p' file