2013-03-14 76 views
6

我在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 

回答

17

要刪除第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

0

這裏是一個匆匆用awk:

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

這不會從文件中刪除該行。它將文件打印到STDOUT,除了這一行。 – mivk 2015-06-05 08:55:18

2

要通過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