スポンサーリンク
範囲指定して列を抽出
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
※MACターミナル(BSD系)での動作確認です。
例えば、下記のin.txtがあったとします。
$ cat in.txt str11 str12 str13 str14 str15 str21 str22 str23 str24 str25 str31 str32 str33 str34 str35 str41 str42 str43 str44 str45 str51 str52 str53 str54 str55
下記がサンプルコードになります。
組み込み変数等でうまくできれば良かったのですが、
見つからず、下記のように少々テクニカルにやりました。
printfを使って工夫してみました。
2列目から4列目を抽出しています。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ start = 2 end = 4 } { for(i = start; i <= end; i++){ printf $i #最終列以外はスペースを入れる if(i != end){ printf " " } } print ""#改行をいれる } '
下記が実行結果になります。
$ ./sample.awk str12 str13 str14 str22 str23 str24 str32 str33 str34 str42 str43 str44 str52 str53 str54
スポンサーリンク
範囲指定して行を抽出
NR変数が使えますね。
参考:awkのNR変数で行数に応じた処理をする
参考:awkで対象レコード(行)を絞って、フィールド(列)の最大値を算出する
下記がサンプルコードになります。
$ cat sample1.awk #!/bin/sh cat in.txt | awk ' BEGIN{ start = 2 end =4 } { if(start <=NR && NR <= end){ print $0 } } '
下記が実行結果になります。
$ ./sample1.awk str21 str22 str23 str24 str25 str31 str32 str33 str34 str35 str41 str42 str43 str44 str45
スポンサーリンク