我想删除一个包含单个字符的文件中的多个空格。 实施例
cat kill rat
dog kill cat
我使用了以下正则表达式,它似乎在http://www.regexpal.com/中匹配但在sed中不起作用。
([^ ])*([ ])*
我像这样使用了sed命令:
sed s/\(\[\^\ \]\)*\(\[\ \]\)*/\$1\|/g < inputfile
我希望,
cat|kill|rat
dog|kill|cat
但我无法让它发挥作用。任何帮助将非常感激。感谢。
编辑: 请注意,猫/狗可能是任何字符,而不是空白。
答案 0 :(得分:5)
sed
反向引用反斜杠,因此请使用\ 1而不是$ 1。
用引号括起你的表达式:
sed 's/match/replace/g' < inputfile
Manpages是Linux世界中最好的发明:man sed
注意*
,它实际上可以匹配NOTHING。
如果要用“|”替换多个空格,请使用此RE:
sed -r 's/ +/\|/g'
来自man sed
:
-r, --regexp-extended
use extended regular expressions in the script.
如果您只想替换所有空格,则不需要任何反向引用。
如果您想匹配标签,请将(空格)替换为
\s
。
答案 1 :(得分:1)
我知道OP想要用sed而且这个问题已经过时了,但是tr -s'输入怎么样?
答案 2 :(得分:0)
怎么样:
s/\s+/\|/g
答案 3 :(得分:0)
您可以使用:
sed -e's / [[:blank:]] / \ | / g'&lt; inputfile中
whete [:blank:]是空格和制表符