awk NR%2{}1 意味

awk NR%2{}1 意味

私はこのコードを理解しようとしています。

awk 'NR%2{printf "%s ",$0;next;}1' yourFile

今カスタマイズしてみたいです。

このerror.txtの内容を考えると、次のようになります。

KEY 4048:1736 string
3
KEY 0:1772 string
1
KEY 4192:1349 string
1
KEY 7329:2407 string
2
KEY 0:1774 string
1

それから:

awk 'NR%2{printf NR "%s ", $0; next}1' error.txt

... 返されます:

1KEY 4048:1736 string 3
3KEY 0:1772 string 1
5KEY 4192:1349 string 1
7KEY 7329:2407 string 2
9KEY 0:1774 string 1

偶数行番号を参照しているようですが、それが何を参照しているのかNR%2わかりません。それ以外の場合は行が返されます。1
1awk 'NR%2{printf NR "%s ", $0; next}' error.txt

1KEY 4048:1736 string 3KEY 0:1772 string 5KEY 4192:1349 string 7KEY 7329:2407 string 9KEY 0:1774 string 

全体的にまだ理解していませんね。

これまで、次のページを見てきました。

ベストアンサー1

%それはモジュロ/残り算術演算子、2 つ以上の数字で構成されるモジュラー分割を探します。ここでは、NR現在のレコード番号を2で割ることを意味し、次のように記録されます。条件文,偶数レコードの結果は 0 なので,0 はエラーの結果なので,次のようになります。行動実行されていません。

最後に、1「常に真」の条件というイディオムが実装され、最初の数行の最後に偶数行番号が出力されます(NR%2結果が0の間実行されます)。ここでは、これらの行番号はprintf改行なしで印刷されます。バラよりawkスクリプトの最後にある「1」とはどういう意味ですか?

おすすめ記事