我有两个已排序的文本文件。文件A的数据如下所示:
adam
humanities
antwon
sciences
bernard
economics
castiel
sciences
dmitri
informatics
zoe
mathematics
文件B的数据如下所示:
adamburnston
antwonreed
justbernard
castiel
dmitrivalchenkov
zoematthews
我需要用文件B(adamburnston)中的行替换文件A(adam)中的行。这两个文件都按字母顺序排列,并包含相同数量的条目。我如何实现这一结果?
预期产出:
adamburnston
humanities
antwonreed
sciences
justbernard
economics
castiel
sciences
dmitrivalchenkov
informatics
zoematthews
mathematics
答案 0 :(得分:3)
以下管道有效:
sed '2~3!d' A | paste -d $'\n' B - | sed $'3~2i\n'
第一部分告诉GNU sed打印第二行,然后是第三行。 paste
使用换行符作为分隔符,将B与第一个sed的输出合并。最后一行在每对行之后添加换行符。
答案 1 :(得分:2)
这个awk应该可以工作:
awk 'FNR==NR{a[i++]=$0;next} NF>0{c++; if (c%2==0) print a[j++] ORS $0 ORS}' fileB fileA