8167656.COMTXSFR.COMXYSJZT.NET256079.COMG-BEI.NET256702.COM516073.COMWBMSR.COMWCRHC.COMWBRZD.COMWCFGR.COM571095.COM5770879.COMWBRTK.COMYWRTF.COMDZJZPX.COM5770819.COMSFCZH.COM8733918.COMHSPCF.COMSFXHT.COMXJFPX.COMWCRGT.COMWCKYR.COMWBRHM.COMWBRYG.COMWCRGX.COMFXTMY.COM1313661.COMBKRQC.COMBKSQC.COMBLLQC.COM6880797.COMWCKKR.COMWCJKR.COM516097.COMFPCYS.COMDKDZS.COMWIN2010.NETSFMWM.COMFSHUAYUE.NET001DAO.NETEXQUISITEGIFT.NETBANTLN.COMW363888.NET8848K.NETV6789.COMSZJIAHUA.NETICJY.NETSUPVAR.NETHUALINONLINE.NE
这是我正在使用的一个例子。我需要在(COM|NET|INFO)
之后添加一个空格,以便域可读。我尝试了几种不同的方法,但似乎无法让它发挥作用。正则表达式应该是(\.INFO|\.COM|\.NET)
对吗?
答案 0 :(得分:1)
尝试以模式转义管道:
sed 's/\(INFO\|COM\|NET\)/& /g' file
答案 1 :(得分:0)
sed
使用POSIX Basic正则表达式,在BRE中使用更改(|
)是一种非便携式扩展。
在这种情况下,要替换多个单词,每个单词需要替换(s
)命令:
sed 's/\.INFO/& /g;s/\.COM/& /g;s/\.NET/& /g'
&
代替了整场比赛。
虽然更简洁的解决方案是使用awk
,它支持扩展正则表达式,并且通过扩展,更改:
awk '{gsub(/\.(INFO|COM|NET)/, "& ")}1'