次のコマンドを実行すると、以下のように列リストが出力されます。
# 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