このawkスクリプトは何をしますか?

このawkスクリプトは何をしますか?

これは何をしますか?

( awk '{ if (NR > 1) print prev " " $1; prev = $1; }' file)

ベストアンサー1

それはawkスクリプトです。awkはプログラミング言語ですフィールドで区切られたデータを処理するのに特に適しています。スクリプト自体は非常に簡単です。

  • if (NR > 1):現在の入力行の行番号を保持するNR特殊変数です。awkしたがって、これは、「現在行番号が1より大きい場合」、つまり「最初の行を除くすべての行について」を意味します。
  • print prev " " $1;NR:と同じですが、$1行の最初のフィールドを保持する特殊変数でもあります。フィールドは空白として定義されているため(デフォルトでを使用して変更できます)、will be、will beなどの行-Fが提供されます。したがって、これは変数値(次の点を参照)、空白()、現在の行の最初のフィールドを印刷します。foo bar$1foo$2barprev" "
  • prev = $1;:この行の最初のフィールドを変数に保存しますprev。したがって、次の行を処理するときは、prev前の行の最初のフィールドがあります。

その機能を確認するには、テスト入力で試すことができます。たとえば、seq 5whichを使用して1から5までの数字を印刷します。


$ seq 5
1
2
3
4
5
$ seq 5 | awk '{ if (NR > 1) print prev " " $1; prev = $1; }'
1 2
2 3
3 4
4 5

上記のように、awkスクリプトは前の行の最初のフィールドを印刷し、現在の行の最初のフィールドを印刷します。

おすすめ記事