2016-12-06 19 views
0

awkの経験はあまりありません。私は電話番号などの名前のリストを持っています。 LastName、FirstName、その他の情報で印刷する情報をどのように再配置するかを知りたい。これは私のファイルが現在整理されている方法です。awkの分割と並べ替え

FirstName LastName:(510) 548-1278:250:100:175 

空白を含まない市外局番にどのように姓が付けられているかを確認しますか?だから私は '{print $ 2 $ 1}'を行うことができません。それは私に最後の名前と市外局番を与えます。私はそれが見えるようにしたい。

LastName , FirstName (510) 548-1278:250:100:175 

文字を連続して分割するにはどうすればよいですか?

+2

実名にはスペースを使用できます。いくつかの国では、2つ以上の名字が非常に一般的です。それを持って、入力データを自動的に解析することはできません – hek2mgl

答えて

0

これはおそらくあなたを助けることができます。

awk -F'[ :]' '{printf "%s , %s %s %s:%s:%s:%s\n", $2, $1,$3,$4,$5,$6,$7}' yourFile 

テスト:最初のスペースが検出されたとき

$ echo "FirstName LastName:(510) 548-1278:250:100:175" | awk -F'[ :]' '{printf "%s , %s %s %s:%s:%s:%s\n", $2, $1,$3,$4,$5,$6,$7}' 
LastName , FirstName (510) 548-1278:250:100:175 
+0

恐縮です。私はそれをよりよく理解しようとしています。 '[:]'はセパレータに空白とコロンを使用するようにawkに指示しますか?空白に関しては空白スペースがコロンの前にある必要があるのはなぜですか? –

+0

@HillariDenny、はい、両方のセパレータに使用するawk。 –

0

はカンマを挿入sed

echo "FirstName LastName:(510) 548-1278:250:100:175" | sed 's//, /;s/:/ /' 

最初置換s//, /でこれを行うことができます。

第2のs/:/ /の置換は、:をスペースで置き換えています。

関連する問題