ABC.txt
という2つのファイルがあるとします。 &PQR.txt
例として以下に示すデータを使用します:
ABC.txt:
ABC DEF
PQR.txt:
PQR XYZ
grep
したい 両方のファイルの列1を作成し、3番目のテキストファイルに書き込みます。どうすればいいですか?
期待される出力は(output.txt):
ABC PQR
承認された回答:
いくつかの方法があります:
-
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
は、入力元のファイルに関係なく、一般的な入力の行番号です。この2つは、最初の入力ファイルが読み取られている間だけ等しくなります。したがって、最初のファイルの最初のフィールドはa
に保存されます 配列(a[FNR]=$1
)キーが行番号で、値が1番目のフィールドです。次に、2番目のファイルに到達すると、その行番号(a[NR]
)に対応する値を出力します。 )および現在の行の最初のフィールド。