如何递归地从所有文件中删除所有与字符串列表不匹配的行
How to remove, from all files recursively, all lines that don't match list of strings
我正在尝试从不需要的行中清除一大堆日志文件,只留下那些包含一些字符串的行。例如:
sunday morning NOPE again
may it be DENSE in such a place
nothing here really
在这种情况下,只保留包含 NOPE 或 DENSE 的行。
我试过使用示例中的 sed,但没能为字符串列表添加 or,例如:
sed -ni.bak '/\NOPE/p' file
你可以使用这个sed
:
sed -E -i.bak '/NOPE|DENSE/!d' file
这将删除所有没有 NOPE
和 DENSE
字符串的行。
如果您只想匹配完整的单词,请使用:
gnu-sed 命令:
sed -i -E '/\b(NOPE|DENSE)\b/!d' file
bsd-sed 命令:
sed -E -i.bak '/[[:<:]](NOPE|DENSE)[[:>:]]/!d' file
我正在尝试从不需要的行中清除一大堆日志文件,只留下那些包含一些字符串的行。例如:
sunday morning NOPE again
may it be DENSE in such a place
nothing here really
在这种情况下,只保留包含 NOPE 或 DENSE 的行。
我试过使用示例中的 sed,但没能为字符串列表添加 or,例如:
sed -ni.bak '/\NOPE/p' file
你可以使用这个sed
:
sed -E -i.bak '/NOPE|DENSE/!d' file
这将删除所有没有 NOPE
和 DENSE
字符串的行。
如果您只想匹配完整的单词,请使用:
gnu-sed 命令:
sed -i -E '/\b(NOPE|DENSE)\b/!d' file
bsd-sed 命令:
sed -E -i.bak '/[[:<:]](NOPE|DENSE)[[:>:]]/!d' file