首页 文章

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

提问于
浏览
0

我有一个文件包含带有前导和尾随空格的字符,我想简单地删除该字符 .

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

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 回答

  • 1

    你可以用 sed 以一种微不足道的方式做到这一点,例如:

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

    Explanation

    使用 sed '/regex/d'sed 常规删除形式删除匹配正则表达式的文件中的行 . 以上,正则表达式是:

    • ^ 锚定正则表达式开头的行;

    • \s* 匹配零或多个空格;

    • ; 匹配分号;

    • \s*$ 将零或多个空格与行尾匹配;

    总之,正则表达式将删除文件中仅包含分号和空格的任何行 .

    要修改文件"in-place",添加 -i 选项并在 file.bak 中创建原始文件的备份,请使用该选项的 -i.bak 形式 .

相关问题