2つのファイルに行を展開します。

2つのファイルに行を展開します。

$file1各人の2行のデータを含むデータファイル()があります。他のデータファイルでデータの3行目()を展開する必要があります$file2。だから私の入力は次のようになります

>cat $file1
  bob  1  1  0
  bob  1  0  1
  alan 0  0  1
  alan 0  1  1

>cat $file2
 bob  a  a  b
 alan a  c  a

したがって、望ましい結果は次のとおりです。

>cat $file3
  bob  1  1  0
  bob  1  0  1
  bob  a  a  b
  alan 0  0  1
  alan 0  1  1
  alan a  c  a

他のすべての行を分散する必要がある場合は、paste次のように使用します。

>paste '-d\n' $file1 $file2

これを達成するための最良のツールは何ですか?を使用していますzsh

ベストアンサー1

のみ:

paste -d '\n' -- - - "$file2" < "$file1"

$file2いいえと仮定-)。

または(変数の内容、ファイル名)に改行文字が含まれていない場合、またはスペースまたはタブで始まらない場合は、sedGNUを使用してください。$file2

sed "2~2R$file2" "$file1" < "$file2"

使用してくださいawk(文字が$file1含まれていない場合=(または含まれている場合は前の部分は許可されているawk変数名ではありません)):

export file2
awk '{print}
     NR % 2 == 0 {if ((getline l < ENVIRON["file2"]) > 0) print l}
    ' "$file1"

おすすめ記事