我在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
我在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
这里是一个匆匆用awk:
lineToDelete=$1
awk "NR != $lineToDelete"
这不会从文件中删除该行。它将文件打印到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
POSIX sed不支持sed -i。由于我们在这里使用Bourne,所以有可能这不是Linux。例如,它在Solaris/usr/bin/sed中不起作用。 – 2013-03-14 02:51:16
POSIX sed不支持sed -i。由于我们在这里使用Bourne,所以有可能这不是Linux。例如,它在Solaris/usr/bin/sed中不起作用。 FWIW。 – 2013-03-14 02:51:49
@jimmcnamara好点。用额外的非'-i'答案更新。 – 2013-03-14 02:53:34
为我完美工作,谢谢。 – user1731199 2013-03-14 03:07:28