jgu*_*ua1 4 regex unix aix ksh sed
我想删除文件中带有单个字符的多个空格.例
cat kill rat
dog kill cat
Run Code Online (Sandbox Code Playgroud)
我使用了以下正则表达式,它似乎在http://www.regexpal.com/中匹配但在sed中不起作用.
([^ ])*([ ])*
Run Code Online (Sandbox Code Playgroud)
我像这样使用了sed命令:
sed s/\(\[\^\ \]\)*\(\[\ \]\)*/\$1\|/g < inputfile
Run Code Online (Sandbox Code Playgroud)
我预计,
cat|kill|rat
dog|kill|cat
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用.任何帮助将非常感激.谢谢.
编辑:请注意猫/狗可以是任何字符而不是空格.
sed
反向引用反斜杠,所以使用\ 1代替$ 1.用引号括住你的表达式:
sed 's/match/replace/g' < inputfile
Run Code Online (Sandbox Code Playgroud)
联机帮助页是Linux世界中最好的发明: man sed
注意*
,它实际上可以匹配NOTHING.如果要用"|"替换多个空格,请使用此RE:
sed -r 's/ +/\|/g'
Run Code Online (Sandbox Code Playgroud)
来自man sed
:
-r, --regexp-extended
use extended regular expressions in the script.
Run Code Online (Sandbox Code Playgroud)
如果您只想替换所有空格,则不需要任何反向引用. (space) by
\s
如果您想匹配标签,请替换.
归档时间: |
|
查看次数: |
13619 次 |
最近记录: |