在shell脚本中使用sed的双倍间距文件

jbi*_*isa 5 unix shell sed

我是shell脚本的新手,我使用以下代码将文件加倍空间(输入文件是一个参数):

sed G $input_file >> $input_file
Run Code Online (Sandbox Code Playgroud)

问题是,如果我原始文件的内容是:

Hi
My name is
Run Code Online (Sandbox Code Playgroud)

我的双倍行距文件是:

Hi
My name is
Hi

My name is
Run Code Online (Sandbox Code Playgroud)

我需要在shell脚本中添加其他内容,以便我的文件只有:

Hi

My name is
Run Code Online (Sandbox Code Playgroud)

Dan*_*ego 5

您正在使用追加运算符(>>),它附加到相关文件.话虽这么说,你通常不能>在bash中操作和输出到同一个文件.对于sed特定情况,您可以使用该-i选项(取决于版本和平台):

sed -i G $input_file
Run Code Online (Sandbox Code Playgroud)

如果你的版本有这个选项,那应该"就地"编辑你的文件.我说"到位"因为我很确定它实际上会创建一个新文件并将其移回到第一个文件的顶部(inode不同).如果没有,您将输出到单独的文件,并将文件移回:

sed G ${input_file} > ${input_file}.bak
mv ${input_file}.bak ${input_file}
Run Code Online (Sandbox Code Playgroud)