2つのファイルがあり、たとえばABC.txt
次PQR.txt
のようなデータがあるとします。
ABC.txt:
ABC DEF
PQR.txt:
PQR XYZ
grep
2つのファイルのうち、列1を3番目のテキストファイルに書きたいです。どうすればいいですか?
私の期待される出力は(output.txt)です。
ABC PQR
ベストアンサー1
これを行う方法はいくつかあります。
使用
paste
とcut
:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQR
システムがプロセス置換をサポートしていない場合は、次のコマンドを使用します。
$ cut -d' ' -f 1 ABC.txt > /tmp/aa; cut -d' ' -f 1 PQR.txt > /tmp/bb; paste -d ' ' /tmp/aa /tmp/bb
使用してください
awk
(@Costasのおかげで):awk 'FNR==NR{a[FNR]=$1; next}{print a[FNR],$1}' ABC.txt PQR.txt > output.txt
特殊変数は、
FNR
現在の入力ファイルの行番号とNR
ファイルのソースに関係なく、通常入力の行番号です。これらは、最初の入力ファイルを読み取る場合にのみ同じです。したがって、最初のファイルの最初のフィールドは配列a
(a[FNR]=$1
)に格納されます。配列のキーは行番号で、値は最初のフィールドです。次に、2番目のファイルに到達すると、その行番号a[NR]
()と現在の行の最初のフィールドに対応する値が印刷されます。