フィルタ. 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 の場合、何列目を指定しても出る |
テスト用文字列
txt
a1 b1 c1 e1
a2,b2,,d2
a3 c3 d3 e3
a4 b4 c4 d4 e4 f4
a5