2016-09-10 19 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基本正規表現を使用し、BREとの変化の使用(|)は、非ポータブル拡張です。この場合

は、置換は(s)コマンドごとワード必要とされている複数の単語を置換する:

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

&全体一致を代入します。

より簡潔なソリューションを拡張することにより、拡張正規表現をサポートする、awkを使用してすることですけれども、改ざん:

awk '{gsub(/\.(INFO|COM|NET)/, "& ")}1' 
関連する問題