# フィルタ. m列目からn列目までを取り出す

# Linux

取りたい列

取りたい列 cut awk メモ
n 列目 cut -f 3 awk '{ print $3 }' -
m 列目 から n 列目 cut -f 3-5 awk '{ print $3,$4,$5 }' -
m 列目 と n 列目 cut -f 3,5 awk '{ print $3,$5 }' cut: 1,3-5とかも可
m 列目 から 最後まで cut -f 6- ? -
並べ替えたい - awk '{ print $5,$4,$3 }' -
最後の列 - awk '{ print $NF }' 列数が固定でないときに便利
最後から2番めの列 - awk '{ print $(NF-1) }' マッチしない場合も出てくる。あと3つめ以降は不可

区切り文字について

区切り文字 cut awk メモ
区切り文字の初期値 タブ 空白文字 awk: 連続したタブや空白は1つ扱い
区切り文字の変更 -d -F -
タブ区切り cut awk -F'\t' -
カンマ区切り cut -d, awk -F, cut,awk: スペースや '', "" はあってもなくても
複数文字区切り - awk -F '::' -
複数文字で区切り - awk -F '[\t ,]+' -
連続した区切り文字は まとめない まとめる awk: 初期値と空白のときだけまとまる
正規表現 - awk -F '[\t ,]+' -
区切り文字にマッチしない場合 全部出る 1列目 cut の場合、何列目を指定しても出る

テスト用文字列

a1	b1	c1		e1
a2,b2,,d2
a3  c3 d3 e3
a4  b4  c4    d4    e4 f4
a5

[ 📩 ご意見 ]