我正在尝试编写一个正则表达式,用空格替换文件中的一个或多个“+”符号。我尝试了以下方法:
echo This++++this+++is+not++done | awk '{ sub(/\++/, " "); print }'
This this+++is+not++done
预期:
This this is not done
为什么这不起作用的任何想法?
答案 0 :(得分:17)
使用进行全局替换的gsub
:
echo This++++this+++is+not++done | awk '{gsub(/\++/," ");}1'
sub
函数仅替换第一个匹配项,以使用gsub
替换所有匹配项。
答案 1 :(得分:7)
或tr
命令:
echo This++++this+++is+not++done | tr -s '+' ' '
答案 2 :(得分:5)
惯用的awk解决方案只是将输入字段分隔符转换为输出分隔符:
$ echo This++++this+++is+not++done | awk -F'++' '{$1=$1}1'
This this is not done
答案 3 :(得分:4)
试试这个
echo "This++++this+++is+not++done" | sed -re 's/(\+)+/ /g'
答案 4 :(得分:3)
您也可以使用sed
。
echo This++++this+++is+not++done | sed -e 's/+\{1,\}/ /g'
匹配一个或多个+
并将其替换为空格。
答案 5 :(得分:-1)
echo "This++++this+++is+not++done" | sed 's/++*/ /g'
答案 6 :(得分:-2)
如果您可以访问计算机上的节点,则可以通过安装rexreplace
来执行此操作npm install -g regreplace
然后运行
rexreplace '\++' ' ' myfile.txt
如果您在目录data
中有更多文件,则可以执行
rexreplace '\++' ' ' data/*.txt