我有大约 14k 行要从文件中删除。它们在另一个文件中:
$ cat delete.lineno.txt
12d
23d
24d
78d
...
..
etc.
我需要从 my.file.txt 文件中删除第 12、23、24、78 行等。我如何使用 来实现这个sed
?
答案1
您可以使用-f
选项sed
从文件中读取命令:
sed -f delete.lineno.txt < my.file.txt
答案2
不要使用sed
- 它不是适合这项工作的工具。使用ex
, 的超集ed
。
tac delete.lineno.txt > cmds
echo 'w!' >> cmds
echo 'q!' >> cmds
ex -s file < cmds
从文件后面删除,以避免删除时弄乱行编号。