我想从文件中删除一个或多个特定的行号。如何使用sed做到这一点?


当前回答

猫- b / etc / passwd | sed - e ' s / ^ () + (< line_number >) (\ t)(. *) /——删除/ g; s / ^ () + ([0 - 9] +) (\ t) / / g’

Cat -b ->打印数字行

S /^()+(<line_number>)(\t)(.*)//g -> replace line number to null (remove line)

s / ^ () + ([0 - 9] +) (\ t) /猫/ g #删除数字印刷

其他回答

您可以删除特定的单行及其行号

sed -i '33d' file

这将删除33行号上的行并保存更新后的文件。

如果你想删除第5到第10行和第12行:

sed -e '5,10d;12d' file

这将把结果打印到屏幕上。如果你想把结果保存到同一个文件:

sed -i.bak -e '5,10d;12d' file

这将把未修改的文件存储为file.bak,并删除给定的行。

注意:行号从1开始。文件的第一行是1,而不是0。

$ cat foo
1
2
3
4
5
$ sed -e '2d;4d' foo
1
3
5
$ 

猫- b / etc / passwd | sed - e ' s / ^ () + (< line_number >) (\ t)(. *) /——删除/ g; s / ^ () + ([0 - 9] +) (\ t) / / g’

Cat -b ->打印数字行

S /^()+(<line_number>)(\t)(.*)//g -> replace line number to null (remove line)

s / ^ () + ([0 - 9] +) (\ t) /猫/ g #删除数字印刷

还有awk

awk 'NR!~/^(5|10|25)$/' file