GNU/Linux >> Linux の 問題 >  >> Linux

2つのファイルから最初の列を取得して3番目のファイルに書き込みますか?

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])に対応する値を出力します。 )および現在の行の最初のフィールド。


Linux
  1. Linuxでの偶発的なファイル削除を防止および回復する方法

  2. Linuxで上書きせずに同じファイルを読み書きしますか?

  3. 最初と最後の行なしでファイルコンテンツを印刷しますか?

  1. Lum –最初の列に従って2つのファイルの共通の値を置き換えますか?

  2. テキストファイルのn番目の列を取る

  3. ファイルを gunzip して .gz ファイルを保持するにはどうすればよいですか?

  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linuxターミナルでファイルをコピーする

  3. Linuxターミナルでファイルの名前を変更します