awkはn番目から最後まですべての列を印刷します。

awkはn番目から最後まですべての列を印刷します。

https://www.gnu.org/software/gawk/manual/gawk.htmlawk '{print $0}' marks.txt セクション1.1.2入力ファイルなしでawkを実行することに基づいて、これはechoのように動作することがわかります。それは戻ってくる

1)  Amit    Physics  80
2)  Rahul   Maths    90
3)  Shyam   Biology  87
4)  Kedar   English  85
5)  Hari    History  89

https://stackoverflow.com/questions/2961635/using-awk-to-print-all-columns-from-the-nth-to-the-last?answertab=votes#tab-top

次のコードも期待どおりに機能します。

awk '{print $0}' marks.txt  | awk '{print $2 "\t" $3 "\t"$4}'

awk '{$1=""; print $0}' marks.txt私は今でもそれが直感的に理解できることを理解していません。

答え1

$1=""; print $0印刷する前に最初のフィールドをクリアし、行全体を再計算します。この内容は次のように記録されます。地域を変えるGAWKマニュアルのセクション:

フィールド値が変更されると(認識されているようにawk)、以前のフィールドがあった新しいフィールドを含むように入力レコードのテキストが再計算されます。つまり、$0変更されたフィールドを反映するように変更します。

これは、GNU拡張ではなくAWKのすべての実装に当てはまります。AWKプログラミング言語この動作は次のように説明されます。

これは重要です。割り当てまたは置き換えると、等が$0変更され、再計算されます。同様に、などのいずれかが変更されると、区切りフィールドを使用して書き換えられます。$1$2NF$1$2$0OFS

関連情報