※MACターミナル(BSD系)での動作確認です。
スポンサーリンク
FS:区切り文字の指定
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
FSで区切り文字を設定できます。
区切り文字を設定する方法については下記の記事を書いています。
参考:awkで区切り文字がタブ(tab)のファイルを読み込む方法
例えば、下記のin.txtがあったとします。
$ cat in.txt e,awk f,find g,awk
下記がサンプルコードになります。
FS = ","としてカンマ区切りのファイルを読み込みます。
そして、1列目と2列目の文字列を連結してprint出力しています。
文字列を連結する方法については下記の記事を書いています。
参考:awkで文字列を連結させる方法
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "," } { print $1 $2 } '
下記が実行結果になります。
$ ./sample.awk eawk ffind gawk
スポンサーリンク
OFS:print出力時の区切り文字を指定
OFSでprint出力時の区切り文字を指定できます。
例えば、下記のin.txtがあったとします。
$ cat in.txt e awk f find g awk
下記がサンプルコードになります。
OFS = ","でprint出力時の区切り文字をカンマ区切りに指定します。
参考:awkのprint出力をタブ区切りにする←デフォルトはスペース区切りになっていることに注意
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ OFS = "," } { print $1, $2 } '
下記が実行結果になります。
$ ./sample.awk e,awk f,find g,awk
NR:読み込んだ行数が格納
NRには読み込んだ行数が格納されます。
例えば、下記のin.txtがあったとします。
$ cat in.txt 11 22 33 44 55 66
下記がサンプルコードになります。
NR >= 4{省略}で、4行目以降の行に対して処理を行います。
参考:awkで対象レコード(行)を絞って、フィールド(列)の最大値を算出する
$ cat sample.awk #!/bin/sh cat in.txt | awk ' NR >= 4{ print $1, $2 } '
下記が実行結果になります。
$ ./sample.awk 44 55 66
スポンサーリンク
RSTARTとRSTART: match()の検索結果が格納
match()関数を実行すると、
RSTARTには、検索対象が検出された最初の位置が、
RLENGTHには、検索対象が検索された文字列の長さが格納されます。
例えば、下記のin.txtがあったとします。
$ cat in.txt abc12345abc a6789abc012abc123 $ cat sample.awk
下記がサンプルコードになります。
#!/bin/sh cat in.txt | awk ' { match($0, /[1-9]+/) print $0 "の数字は、" RSTART "文字目から" RLENGTH "文字登場します." } '
下記が実行結果になります。
$ ./sample.awk abc12345abcの数字は、4文字目から5文字登場します. a6789abc012abc123の数字は、2文字目から4文字登場します.
スポンサーリンク