これは何をしますか?
( 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
$1
foo
$2
bar
prev
" "
prev = $1;
:この行の最初のフィールドを変数に保存しますprev
。したがって、次の行を処理するときは、prev
前の行の最初のフィールドがあります。
その機能を確認するには、テスト入力で試すことができます。たとえば、seq 5
whichを使用して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スクリプトは前の行の最初のフィールドを印刷し、現在の行の最初のフィールドを印刷します。