Sed 删除除两个模式以外的所有内容
有没有办法删除bash中除了两个模式以外的所有模式 我知道我可以删除所有内容,但不能使用Sed 删除除两个模式以外的所有内容,sed,Sed,有没有办法删除bash中除了两个模式以外的所有模式 我知道我可以删除所有内容,但不能使用 sed '/pattern/!d' 但我正在寻找一种方法,删除除两种模式以外的所有模式。。。像这样的 sed '/pattern1 and pattern2/!d' 我不知道怎么做 顺便说一句,我正在尝试删除所有内容,但: 谢谢您的帮助。您想删除所有不包含pattern1或pattern2的行。为此,请使用适当的或 $ cat in.txt foo bar baz qux $ sed '/foo\|ba
sed '/pattern/!d'
但我正在寻找一种方法,删除除两种模式以外的所有模式。。。像这样的
sed '/pattern1 and pattern2/!d'
我不知道怎么做
顺便说一句,我正在尝试删除所有内容,但:
谢谢您的帮助。您想删除所有不包含
pattern1
或pattern2
的行。为此,请使用适当的或
$ cat in.txt
foo
bar
baz
qux
$ sed '/foo\|bar/!d' < in.txt
foo
bar
$cat in.txt
福
酒吧
巴兹
库克斯
$sed'/foo\| bar/!d'
您想删除所有不包含pattern1
或pattern2
的行。为此,请使用适当的或
$ cat in.txt
foo
bar
baz
qux
$ sed '/foo\|bar/!d' < in.txt
foo
bar
$cat in.txt
福
酒吧
巴兹
库克斯
$sed'/foo\| bar/!d'
更好地回答了我之前的问题。您可以使用grep
执行此任务,前提是您的模式位于in.txt
中,并且您的输出位于out.txt
grep -E -o '(pattern1|pattern2) in.txt > out.txt'
E
用于扩展正则表达式,o
仅显示匹配模式 更好地回答了我以前的问题。您可以使用grep
执行此任务,前提是您的模式位于in.txt
中,并且您的输出位于out.txt
grep -E -o '(pattern1|pattern2) in.txt > out.txt'
E
用于扩展正则表达式,o
仅显示匹配模式 而不是!d
您可以使用-n
和p
命令:
sed -n '/pattern1/p; /pattern2/p'
它还应该与GNU-sed以外的sed一起工作…而不是
!d
您可以使用-n
和p
命令:
sed -n '/pattern1/p; /pattern2/p'
除了GNU sed之外,它还可以用于sed…您可以使用
awk
或sed
进行此操作
$ cat file
foo
bar
baz
qux
$ sed -n '/foo\|bar/p' file
foo
bar
$ awk '/foo|bar/' file
foo
bar
上面将打印包含
foo
或bar
的任何行。例如,如果您希望更具体一些,仅当foo
或bar
位于行首时才打印,则可以使用^
,这意味着仅打印以图案开头的图案 您可以使用awk
或sed
执行此操作
$ cat file
foo
bar
baz
qux
$ sed -n '/foo\|bar/p' file
foo
bar
$ awk '/foo|bar/' file
foo
bar
上面将打印包含foo
或bar
的任何行。例如,如果您希望更具体一些,仅当foo
或bar
位于行首时才打印,则可以使用^
,这意味着仅打印以图案开头的图案