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 

Das ist ein Beispiel für das, was ich arbeite. Ich muss ein Leerzeichen nach (COM|NET|INFO) hinzufügen, damit die Domänen lesbar sind. Ich habe ein paar verschiedene Wege ausprobiert, aber ich kann es nicht funktionieren lassen. Die Regex sollte (\.INFO|\.COM|\.NET) richtig sein?Hinzufügen eines Platzes zwischen einem Spiel in Sed

Antwort

1

Try Rohre in Muster zu entkommen:

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

Es scheint, dass die Antwort war. Vielen Dank. – Ben

0

sed POSIX Grund Reguläre Ausdrücke verwendet, und die Verwendung von Veränderung (|) in BREs ist eine nicht-portable Erweiterung.

In diesem Fall wird für mehrere Wörter eine Substitution (s) Befehl pro Wort zu ersetzen, benötigt wird:

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

& für das gesamte Spiel ersetzt.

Obwohl eine prägnante Lösung verwenden awk würde, die durch die Erweiterung erweitern reguläre Ausdrücke und unterstützt, Änderung:

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