Linux Sed命令无法按预期从文件中删除特定行
我曾尝试使用Linux Sed命令无法按预期从文件中删除特定行,linux,bash,sed,centos,Linux,Bash,Sed,Centos,我曾尝试使用sed命令从文件中删除特定行,但在我的系统(CentOS 6.3版(最终版))中似乎无法正常工作 my file1.txt包含以下数据 line1 line2 line3 line4 line5 现在我尝试使用下面的命令从文件中删除第三行 $ sed '3d' file1.txt 上述命令的输出为 line1 line2 line4 line5 但当我检查原始文件时,它似乎没有被删除。第三行在那个里 所以有人知道为什么sed不工作吗?让它成为在线sed: sed -i.bak
sed
命令从文件中删除特定行,但在我的系统(CentOS 6.3版(最终版))中似乎无法正常工作
my file1.txt包含以下数据
line1
line2
line3
line4
line5
现在我尝试使用下面的命令从文件中删除第三行
$ sed '3d' file1.txt
上述命令的输出为
line1
line2
line4
line5
但当我检查原始文件时,它似乎没有被删除。第三行在那个里
所以有人知道为什么sed
不工作吗?让它成为在线sed:
sed -i.bak '3d' file1.txt
要使用
sed
从文件中删除特定行而不创建备份,请执行以下操作:
sed-i'-e'3,6d'file1.txt
上面的命令将从
file1.txt
中删除第3行(包括第6行),而不创建备份正常工作,因此基本上sed
命令安全工作意味着首先备份原始文件,然后从原始右侧删除。感谢lotYes,这是正确的,您将使用.bak
看到原始文件备份扩展。@anubhava:但此命令在busybox的sed中不起作用。您应该使用sed-i'3d'file1.txt,而不能在busybox上测试,但出于安全目的,通常sed命令允许备份扩展。sed-i'3d'file1.txt
也可以在不备份原始文件的情况下工作。