【发布时间】:2012-07-07 08:28:55
【问题描述】:
我有一个文本文件,其中包含一个巨大的行号列表,我必须从另一个主文件中删除它。这是我的数据的样子
lines.txt
1
2
4
5
22
36
400
...
和documents.txt
string1
string2
string3
...
如果我有一个简短的行号列表,我可以轻松使用
sed -i '1d,4d,5d' documents.txt。
但是有很多行号我必须删除。此外,我可以使用 bash/perl 脚本将行号存储在数组中,并回显不在数组中的行。但我想知道是否有内置命令可以做到这一点。
任何帮助将不胜感激。
【问题讨论】:
-
只是一个观察,不知道 sed 的工作原理,但是如果文件在内存中被修改并且你删除了第 1 行,你的旧第 4 行现在将是当前第 3 行。
-
为什么不使用
sed来构建'#d,...'字符串? -
@WesMiller 这可能是真的,但如果你像我上面发布的那样使用
sed -i,它会删除特定的行并且行号不会像你提到的那样移动。 -
@user946850 我不确定您的评论是否正确,但您是要重新格式化我的 lines.txt 文件为 '
d, d' 吗?如果这就是你的意思.. 该死的我没想到!谢谢你的提示!点赞!
标签: linux string sed awk text-files