以下に示すように、2つの列を持つファイルがあります(例)。
ファイル1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
これをフォーマットする必要があり、予想される出力は次のようになります。
ファイル1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
入力が2列のみだった場合、column -t
を使用することをお勧めします。 column
ユーティリティは任意の数のスペースまたはタブを列の区切り文字として扱うため、これはここではまったく機能しません。
$ column -t file1
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
"Michael Rod"は2つの列であるため、単一の行は他の行よりも1列多く、出力がめちゃくちゃになります。
これを回避するには、最後の列の前にタブ文字を挿入し、column
を区切り文字として(のみ)使用させます。
$ awk '{ $NF = "\t" $NF; print }' file1 | column -t -s $'\t'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Awkでは、NF
はフィールド(列)の数であり、$NF
は最後のフィールドのデータです。私が単純に使用しているスクリプトmodify完全な行を印刷する前に、タブ文字を前に付けることによって最後のフィールドのデータ。
シェルが$'\t'
を理解できない場合は、データの一部ではない別の文字を選択できます。
awk '{ $NF = "@" $NF; print }' file1 | column -t -s '@'
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9