awkは無効な列のフィールドを印刷します。

awkは無効な列のフィールドを印刷します。

次のコマンドを実行すると、以下のように列リストが出力されます。

# rancher clusters
CURRENT   ID        STATE     NAME                           PROVIDER  
*         abcd      active    test-cluster                   Imported
          efgh      active    prod-cluster                   Imported
          xyzd      active    dev-cluster                    Imported

NAME列を印刷しようとすると、test-clusterは結果に返されません。

# rancher clusters | awk '{print $3}'
STATE
active
prod-cluster
dev-cluster

印刷されたNAME列に表示されているSTATE列の一部を表示できます。

4 番目の列を印刷すると、テストクラスターが NAME とともに返されます。

# rancher clusters | awk '{print $4}'
NAME
test-cluster
Imported
Imported

awkが印刷された正確な列の値を返さないのはなぜですか?ある列の値が別の列に返されるのはなぜですか?私の期待は、3ドルを印刷すると、4番目の列(名前)のすべての結果が得られることです。

ベストアンサー1

あなたはいGet $3- しかし、デフォルトでは、awkはレコードをフィールドに分割するときの先頭と末尾のスペースを無視します。

フィールド区切り文字を明示的に設定して、前のスペースを空のフィールドとして扱うように強制できる必要があります。

$ cat clusters | awk -F'[ \t]+' '{print $3}'
STATE
active
active
active

しかし、

$ cat clusters | awk '{print $3}'
STATE
active
prod-cluster
dev-cluster

おすすめ記事