awkで区切った列をさらに別の文字列で区切る(列を二重に区切る)
Pocket

awkで、「-F」などで一度特定の文字で区切ったあと、特定の列だけ更に別の文字で区切りたい時がある。
そういった場合、以下のように「split」で対象の列を区切って値を配列に入れてやれば良い。

Sponsored Links

例)一度目は「,」で、二度目は「|」で文字列を区切る場合

awk -F ',' '{split($2, arr, "|"); print $1 arr[2]}' sample.txt
[root@BS-PUB-CENT7-01 ~]# cat /tmp/sample.txt
2016/05/12|00:00:00,ls -la | grep aaa,245
2016/05/12|00:00:02,ls -la | grep bbb,222
2016/05/12|00:00:04,ls -la | grep ccc,112
2016/05/12|00:00:06,ls -la | grep ddd,192
[root@BS-PUB-CENT7-01 ~]# awk -F ',' '{split($2, arr, "|"); print $1","arr[2]}' /tmp/sample.txt
2016/05/12|00:00:00, grep aaa
2016/05/12|00:00:02, grep bbb
2016/05/12|00:00:04, grep ccc
2016/05/12|00:00:06, grep ddd

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。