各行の末尾にサフィックス文字列を追加しますか? [コピー]

各行の末尾にサフィックス文字列を追加しますか? [コピー]

2つのファイルがあります。

ファイル01:

line1
line2
line3

ファイル02:

A
B
C

欲しい

line1 A
line2 B
line3 C

Perlスクリプトを書くこともできますが、それを必要としない場合は良いでしょう。

私は明らかなgrep -o '^' file02 >> file01を使ってみました。

しかし、これは生産します

line1
line2
line3
A
B
C

これは簡単なことですが、「man grep」(grepマニュアル)では見つかりません。

答え1

両方のファイルを一緒に「圧縮」するには、次のpasteコマンドを使用します。

 paste -d ' ' file01 file02

答え2

〜のように@1-crが提案しましたpasteこれを行う最善の方法はコマンドです。完全性のために、以下はいくつかの異なるオプションです。

  1. Bashとファイル記述子(で適応ここ):

    exec 3<file02
    while read foo; do
     read -u3 bar;
     echo $foo $bar;
    done < file01
    exec 3>&-
    

    ここでは、.というファイル記述子を作成します3file02次に、オプションを使用してreadファイル記述子から変数を読み込みます-u。最後に、通常のループが読み取られます。bar3whilefoofile01

  2. 真珠

    perl -ne 'BEGIN{open($fh,"file02");@a=<$fh>} 
        chomp; print "$_ $a[$.-1]"' file01
    
  3. awk/gawk

    gawk 'BEGIN{f=ARGV[1]}
         {
          if(FILENAME==f){a[FNR]=$0}
          else{print a[FNR],$0}
         }' file01 file02
    

関連情報