如何删除前导和尾随空格的字符?

时间:2018-12-10 08:34:50

标签: bash grep

我有一个文件,其中包含带有前后空格的字符,我想简单地删除该字符。

到目前为止,以下内容适用于前导空格,而冒号表示要删除的字符:

grep -v '^\s*;$' "input_file" > "output_file".tmp
mv "output_file".tmp "input_file"

现在我也想在有尾随空格时删除该字符。

假设我有一个像这样的文件:

Some Text
; 
;
Some Text again
;
Some Text once again

我希望它像这样:

Some Text
Some Text again
Some Text once again

1 个答案:

答案 0 :(得分:1)

您可以使用sed来实现此目的,例如

$ sed '/^\s*;\s*$/d' file
Some Text
Some Text again
Some Text once again

说明

使用sed的{​​{1}}常规删除形式删除与 regex 匹配的文件中的行。上面的 regex 是:

  • sed '/regex/d'在行首锚定正则表达式的开始;
  • ^匹配零个或多个空格;
  • \s*分号匹配;
  • ;将零个或多个空格匹配到行尾;

在一起,正则表达式将删除文件中仅包含分号和空格的任何行。

要“就地”修改文件,请添加\s*$选项,并使用-i形式的选项在file.bak中创建原始文件的备份。 / p>