我正在尝试在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

07-25 22:04
查看更多