awkで特定の列を抽出
※MACターミナル(BSD系)での動作確認です。
例えば、カンマ区切りのファイルの2列目を抽出する場合です。
参考:awkの-Fオプションで区切り文字を指定する方法
$ cat in.txt | awk -F"," '{print $2}'
スペース区切りの例は下記の記事で書いています。
参考:awkで$1(1列目)をprint出力する
例えば、下記のin.txtがあったとします。
$ cat in.txt a1,a2,a3 b1,b2,b3 c1,c2,c3 d1,d2,d3 e1,e2,e3
下記が実行結果になります。
$ cat in.txt | awk -F"," '{print $2}'
a2
b2
c2
d2
e2
列を抽出して文字列を付与
例えば、2列目を抽出して、2列目の前に文字列を付与します。
$ cat in.txt | awk -F"," '{print "3列目は"$3}'
文字列を連結させているだけですね。
参考:awkで文字列を連結させる方法
下記が実行結果になります。
$ cat in.txt | awk -F"," '{print "3列目は"$3}'
3列目はa3
3列目はb3
3列目はc3
3列目はd3
3列目はe3
3列目の1文字目をsubstr()で抽出して、先頭に文字列を付与しています。
参考:awkでsubstr()を使って文字列を切り出す方法
$ cat in.txt | awk -F"," '{print "3列目の1文字目は" substr( $3, 1, 1)}'
3列目の1文字目はa
3列目の1文字目はb
3列目の1文字目はc
3列目の1文字目はd
3列目の1文字目はe
