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

时间:2012-02-19 00:14:41

标签: shell unix sed

我是shell脚本的新手,我使用以下代码对文件进行双重空间处理(输入文件是参数):

sed G $input_file >> $input_file

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

Hi
My name is

我的双倍行距文件是:

Hi
My name is
Hi

My name is

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

Hi

My name is

1 个答案:

答案 0 :(得分:5)

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

sed -i G $input_file

如果您的版本具有该选项,则应该“就地”编辑您的文件。我说“就地”,因为我很确定实际创建一个新文件并将其移回到第一个文件之上(inode不同)。如果没有,您将输出到单独的文件,并将文件移回:

sed G ${input_file} > ${input_file}.bak
mv ${input_file}.bak ${input_file}