从Bourne Shell中指定行号的文件中删除行

问题描述:

我在Bourne Shell中预约跟踪脚本,并且需要从文本文件中删除约会。如果我有行号,如何从文件中删除一行而不留空格?该文件是这样的:从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 

要删除第5行,这样做:

sed -i '5d' file.txt 

对于可变行号:

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

如果-i选项不可用在你的sed的味道,你可以用temp文件模拟它:

sed "${line}d" file.txt > file.tmp && mv file.tmp file.txt 
+1

POSIX sed不支持sed -i。由于我们在这里使用Bourne,所以有可能这不是Linux。例如,它在Solaris/usr/bin/sed中不起作用。 FWIW。 – 2013-03-14 02:51:49

+0

@jimmcnamara好点。用额外的非'-i'答案更新。 – 2013-03-14 02:53:34

+0

为我完美工作,谢谢。 – user1731199 2013-03-14 03:07:28

这里是一个匆匆用awk:

lineToDelete=$1 
awk "NR != $lineToDelete" 
+0

这不会从文件中删除该行。它将文件打印到STDOUT,除了这一行。 – mivk 2015-06-05 08:55:18

要通过appointement删除(行)号:

sed -i '3d' input 

按名称删除:

sed -i '/:Poker/d' input 

如果就地(-i )选项在您的系统上无法正常工作:

sed '/:Poker/d' input > input.tmp && mv input.tmp input 
+0

POSIX sed不支持sed -i。由于我们在这里使用Bourne,所以有可能这不是Linux。例如,它在Solaris/usr/bin/sed中不起作用。 – 2013-03-14 02:51:16