2016-09-10 3 views
0
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)이어야합니다.Sed의 일치 항목 사이에 공백 추가

답변

1

봅니다 패턴으로 파이프를 탈출 :

sed 's/\(INFO\|COM\|NET\)/& /g' file 
+0

이 그 답이었다 나타납니다. 감사. – Ben

0

sed는 POSIX 기본을 정규 표현식 및 BREs의 변경 (|)의 사용을 사용하는 비 휴대용 확장입니다. 이 경우

는 교체 ( s) 명령 단어 당 필요한 여러 단어를 대체 :

sed 's/\.INFO/& /g;s/\.COM/& /g;s/\.NET/& /g' 

& 전체 일치 치환된다.

더 간결 솔루션을 확장하여 확장 된 정규 표현식을 지원 awk을 사용하는 것입니다하지만

는, 변경이 :

awk '{gsub(/\.(INFO|COM|NET)/, "& ")}1'