我正在尝试在shell脚本中使用sed命令,在该脚本中,我想删除读取STARTremoveThisComment
的行和读取removeThisCommentEND
的行。
我可以使用以下方式将其复制到新文件中
sed 's/STARTremoveThisComment//' > test
但是,如何通过使用相同的文件作为输入和输出来实现呢?
最佳答案
sed -i
(或扩展版本,--in-place
)将使用较低级的实现自动完成通常执行的过程,即将输出发送到临时文件,然后将其重命名为原始文件。-i
用于就地编辑,您还可以提供备份后缀以保留原始副本:
sed -i.bak fileToChange
sed --in-place=.bak fileToChange
两者都将原始文件保存在
fileToChange.bak
中。请记住,就地编辑可能并非在所有
sed
实现中都可用,但在GNU sed
中是应如此,根据您的标签,它应在Linux的所有变体中都可用。如果您使用的是更原始的实现,则可以使用以下方法:
cp oldfile oldfile.bak && sed 'whatever' oldfile >newfile && mv newfile oldfile