使用sed / awk / etc将一个文本文件中的奇数行替换为另一文本文件中的相应奇数行

艾米莉·罗兰兹(Emily Rowlands)

我想用另一个文本文件中的相应行替换文本文件中的一行。

File1的内容:

>line1  
GGG  
>line2  
AAA  
>line3  
TTT  
>line4  
CCC  
>line5  
CAT 

File2的内容:

>name.A
CTGG  
>name.B
GACC  
>name.C
CTGG  
>name.D
GGAA  
>name.E
GCTA

两个文件中的行数相同。最终文件应如下所示:

>name.A  
GGG   
>name.B  
AAA  
>name.C  
TTT  
>name.D  
CCC  
>name.E  
CAT 

我在寻找解决方案,但似乎找不到。我确实尝试了以下方法:

awk 'FNR==NR {data[FNR]=$0; next} (FNR%2==1){$0=data[FNR]}1' < File1 < File2

但什么也没发生。

任何帮助将非常感激!

埃德·莫顿
$ awk 'NR==FNR{a[NR]=$0; next} {print (FNR%2 ? $0 : a[FNR])}' file1 file2
>name.A
GGG
>name.B
AAA
>name.C
TTT
>name.D
CCC
>name.E
CAT

除了更简洁(并且可以使用:-)),上述方法比您使用的方法更有效,因为:

  1. 它没有分配给$ 0,因此也没有强迫awk将记录重新拆分为字段
  2. 1在决定是否打印之前,它并没有为每一行测试第二个条件()。

另外-不要使用输入重定向打开awk的文件,因为它不适用于多个文件(如您所知),并且使您无法检查FILENAME。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用sed / awk将某一行之后的文件中的所有文本替换为另一个文本文件的内容?

如何使用SED / AWK将文本文件中的第一行与最后一行交换

从具有|的文本文件中提取值 使用awk命令将管道作为文本文件中的定界符,并使用sed将<br>标记替换为新行?

使用awk或sed忽略文本文件中一行中的反斜杠后的逗号

如何在Unix中使用awk从文本文件中打印奇数字段?

grep/sed/awk 将文本文件解析为一个文件,其中基因为行,描述为列

使用AWK将每个单词放在文本文件中的新行上

如何使用awk(或sed等)将文本文件列中的“ yyyy-mm-dd”转换为“ dd.mm”?

grep/sed/awk 解析文本文件以在模式匹配后打印多行并转换为一行

使用awk / sed编辑文本文件

使用sed或awk从文本文件生成CSV

使用sed在文本文件的另一行之前输入文本文件中的文本

使用SED / AWK,从文本文件中提取行,其中该行与上一行具有N个常用词

使用awk或sed删除文本文件中行之间的行

使用awk跳过文本文件中的前6行/行

Powershell - 将文本放入变量中,使用文本替换另一个文本文件中的文本

使用宏将文本文件中的单词替换为另一个单词

使用awk对齐文本文件中的列?

使用awk从文本文件中删除第一列

如何使用合并命令将此文本文件中的 5 行与另一个文本文件中的 1 行合并?

我有三个文本文件,我想将它们合并(打印)在一个文件中。使用awk程序

使用Awk将一个文件中的字符串替换为另一文件中的字符串

使用awk解析文本文件

如何使用awk或bash中的sed在制表符分隔的文本文件中的行末尾附加计算的输出?

使用 sed 替换文本文件中 2 个特定行之间的文本

如何使用Bash使用另一个文本文件中存在的转换来替换文本文件中的列中的名称

AWK / sed-在小于特定值的数字前在文本文件中写入文本

使用awk重新格式化文本文件并将其剪切为一个衬里

使用awk将制表符分隔的文本文件中的两列相乘