11

我正在 Bourne Shell 中制作约会跟踪脚本,需要从文本文件中删除约会。如果我有行号,如何从不留空白的文件中删除一行?该文件如下所示:

1:19:2013:Saturday:16.00:20.30:Poker  
1:24:2013:Thursday:11.00:11.45:Project meeting  
1:24:2013:Thursday:14.00:15.10:CSS Meeting
4

3 回答 3

31

要删除第 5 行,请执行以下操作:

sed -i '5d' file.txt

对于可变行号:

sed -i "${line}d" file.txt

如果该-i选项在您的 sed 风格中不可用,您可以使用临时文件来模拟它:

sed "${line}d" file.txt > file.tmp && mv file.tmp file.txt
于 2013-03-14T02:46:53.787 回答
2

按预约(行)号删除:

sed -i '3d' input

按名称删除:

sed -i '/:Poker/d' input

如果就地 ( -i) 选项在您的系统上不起作用,您可以执行以下操作:

sed '/:Poker/d' input > input.tmp && mv input.tmp input
于 2013-03-14T02:47:26.823 回答
0

这是使用 awk 的快速操作:

lineToDelete=$1
awk "NR != $lineToDelete"
于 2013-03-14T02:47:20.993 回答