4

次のように2つのファイルがあります。

ファイル_1

Austin
Los Angeles
York
San Ramon

ファイル_2

Texas
California
New York
California

次のように水平にマージしたい:

Austin       Texas
Los Angeles  California
York         New York
San Ramon    California

コマンドを使用して水平方向にマージすることはできますpasteが、書式設定がうまくいきません。

Austin Texas
Los Angeles California
York New York
San Ramon California

それが想定どおりに機能していることはわかってpasteいますが、誰かが私を正しい方向に向けて正しいフォーマットにすることができます.

ありがとう。

4

3 に答える 3

6

貼り付けは、ファイルを「マージ」するときにタブを使用しているため、ファイルを後処理してスペースを含むタブを削除する必要がある場合があります。

paste File_1 File_2 | awk 'BEGIN { FS = "\t" } ; {printf("%-20s%s\n",$1,$2) }'

結果:

Austin              Texas
Los Angeles         California
York                New York
San Ramon           California
于 2012-08-03T11:54:27.863 に答える
1

まず、最長行の文字数を確認する必要があります。fmt を使用して、最初のファイルの行をさらに長くすることができます。ペーストで仕上げます。

于 2012-08-03T11:53:42.527 に答える
1

フィールド幅についてのアイデアがある場合は、次のようにすることができます。

IFS_BAK="$IFS"
IFS=$'\t'
paste file_1 file_2 \
| while read city state; do 
    printf "%-15s %-15s\n" "$city" "$state"
  done
IFS="$IFS_BAK"

または、この短いバージョン:

paste file_1 file_2 | while IFS=$'\t' read city state; do
  printf "%-15s %-15s\n" "$city" "$state"
done

または次のcolumnツールを使用しbsdmainutilsます。

paste file_1 file_2 | column -s $'\t' -t
于 2012-08-03T12:12:47.390 に答える