次のような行がたくさんあります。
uid: jdoes mail: [email protected]
mail: [email protected] uid: mdoes
uid: kdoes mail: [email protected]
mail: [email protected] uid: tdoes
次のように並べ替えるにはどうすればよいですか?
uid: jdoes mail: [email protected]
uid: mdoes mail: [email protected]
uid: kdoes mail: [email protected]
uid: tdoes mail: [email protected]
ベストアンサー1
重要なことに、AWKは何かと一致する行で特定のタスクを実行します。 2 種類の線があるため、各タイプが一致し、異なる方法で印刷されます。 1つの方法は次のとおりです。
awk '/^uid/ { print } /^mail/ { print $3" "$4" "$1" "$2 }' <your files>
仕組み:
- この文字で始まる行は、現れる
uid
ように印刷してください。 - その列で始まる行に対して列を別々に配置します(
mail
行にあるので、間に余分なスペースがあることに注意してください)。$1
$2
uid
(この行はファイルに他の行がある場合に便利です。)
他の方法:
awk '/^mail/{$0=$3" "$4" "$1" "$2};1' <your files>
仕組み:
print
基本的に$0
(フルライン)印刷。;1
; { print }
;- 我々は
$0
ラインマッチングを変更します^mail
。
(処理して印刷したい場合は、この方法が速くなる可能性があります。ファイル内のすべての行。ドンクリスティに感謝します。 )