awkの組み込み変数NRとNFについて解説 | 瀬戸内の雲のように

awkの組み込み変数NRとNFについて解説

Posted: 2019-04-20


スポンサーリンク

目次

はじめに

linuxでテキスト処理を行うのに一番便利なのはawkだと信じて疑わない私です。
しかし一方で学習コストが高いのもawkの特徴です。初めて見た時、「これ、何やってるんだろう。。?」と思った人は少なくないと思います。
今回はそんなawkをスマートに使うためのtipsをご紹介いたします。

 

NRとNF

awkには便利な組み込み関数がいくつも用意されていますが、私がよく使うのは、 NRNF の二つです。
これはそれぞれ 行数カラム数 を表しております。

またNFについては $ を付けることで $カラム数 と言う意味、つまり 最後のカラムの文字列 と言う意味になります。

変数名 意味
NR 行数
NF カラム数
$NF 最後のカラムの文字列

 

実際に使ってみる

それでは実際の使用例を説明します。

 

NR

NRは行数を意味します。例えば 1行目はヘッダ行なので除外したい と言うような場合に使います。

以下、例です。

特に何もつけずにvmstatを実行すると先頭行にヘッダが付きます。

$ vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 121828 128224 116340 276780    0    0     0     3    1    0  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   48   39  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   52   39  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   46   42  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   35   29  0  0 100  0  0

 
このような先頭行をawkを使うことで取り除くことができます。

$ vmstat 1 5 | awk 'NR>2{print}'
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0 121828 128224 116340 276780    0    0     0     3    1    0  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   48   39  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   52   39  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   46   42  0  0 100  0  0
 0  0 121828 128208 116340 276780    0    0     0     0   35   29  0  0 100  0  0

上記の NR>2 と言うのは 2行目以降から表示 と言う意味になります。

 

NF

NFは行のカラム数を表します。使い方の例を示します。

echo 'a b c d' | awk '{print NF}'
4

上記のように入力が4カラムだったので 4 と表示されます。

 

$NF

先程のNFを応用すると、 最後のカラムを取得する という使い方ができます。

echo 'a b c d' | awk '{print $NF}'
d

これは、 NF4 と解釈するため、 $NF$4 として扱うということです。
この方法を使えば、十数カラムあるような長い行でもいちいち数えることなく最終行を表示することができます。

 
以上、awkのNRとNFの使い方でした。


スポンサーリンク




コメント一覧


コメントを投稿する


お名前


コメント内容





TOP back