-2

2 つのソートされたテキスト ファイルがあります。ファイル A のデータは次のようになります。

adam
humanities

antwon
sciences

bernard
economics

castiel
sciences

dmitri
informatics

zoe
mathematics

ファイル B のデータは次のようになります。

adamburnston
antwonreed
justbernard
castiel
dmitrivalchenkov
zoematthews

ファイル A (adam) の行をファイル B (adamburnston) の行に置き換える必要があります。どちらのファイルもアルファベット順に並べられており、同じ数のエントリが含まれています。どうすればこの結果を達成できますか?

期待される出力:

adamburnston
humanities

antwonreed
sciences

justbernard
economics

castiel
sciences

dmitrivalchenkov
informatics

zoematthews
mathematics
4

2 に答える 2

3

次のパイプラインが機能します。

sed '2~3!d' A | paste -d $'\n' B - | sed $'3~2i\n'

最初の部分は、GNU sed に 2 行目を出力し、次に 3 行目を出力するように指示します。paste区切り文字として改行を使用して、B を最初の sed の出力とマージします。最後の行は、行の各ペアの後に改行を追加します。

于 2013-08-22T09:05:32.470 に答える
2

この awk は動作するはずです:

awk 'FNR==NR{a[i++]=$0;next} NF>0{c++; if (c%2==0) print a[j++] ORS $0 ORS}' fileB fileA
于 2013-08-22T09:14:44.203 に答える