-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 打印第二行,然后是第三行。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 回答