我有一个文件,其中包含带有前后空格的字符,我想简单地删除该字符。
到目前为止,以下内容适用于前导空格,而冒号表示要删除的字符:
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
答案 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>