sed删除txt文件中不匹配模式的行

sed删除txt文件中不匹配模式的行

我正在处理一个 txt 文件,其中列出了一堆其他 txt 文件,其中很多文件都是我错误地复制的。

我使用的是 macOS,因此列出重复文件的行均以模式 结尾(NUMBER).txt。我想删除所有不包含此模式的行。

我想出了这个命令来测试正则表达式,但它不起作用,因为它还打印以以下结尾的行(WORD).txt

sed '/\(\d\)\.txt$|\(\d\d\)\.txt$|\(\d\d\d\)\.txt$/p' file.txt

我知道我错过了一些东西,但我不知道是什么......感谢您的帮助!

答案1

这应该有效:

sed -E -n '/.*[0-9]+\.txt$/p' file.txt

如果你看一下信息sed,在第 2.1 段中您将找到一些如何使用组合的示例sed -n '...p'

上面的命令打印到标准输出。如果您想就地修改文件,请添加该-i选项。

相关内容