我有一个包含大量空格和一些其他ASCII字符的文本文件。我想使用Bash(最好通过sed
)用文件M
替换文件中的任何非空格字符。我该怎么做呢?
感谢您的帮助。
编辑:对于downvoters,我尝试运行这个:
sed -i 's/[^\s]/M/g' file
和此:
sed -i 's/[^\s]/M/' file
但他们都没有成功。我对正则表达式有点不熟悉,如果我做了一些明显错误的事情,请道歉。
答案 0 :(得分:3)
您可以使用POSIX字符类:
sed -i 's/[^[:space:]]/M/g' file
例如:
$ echo 'a b c' | od -a
0000000 a sp b sp ht c nl
0000007
$ echo 'a b c' | sed 's/[^[:space:]]/M/g' | od -a
0000000 M sp M sp ht M nl
0000007
注意:
g
命令的s
标志,因为您要替换行中的所有匹配项答案 1 :(得分:2)
使用tr
tr -c '[:space:]' M < file