处理生物信息数据时经常涉及文本处理。活用linux三剑客能够极大提升处理效率。本期小编会开设专题整理一些工作流中经常遇到的文本处理问题,分享处理过程代码。
使用 awk 命令将一个文本文件每行的内容追加到另一个文本文件的对应行的末尾。假设有两个文件 file1.txt
和 file2.txt
,我希望将 file2.txt
的每行内容追加到 file1.txt
的对应行的末尾,以制表符分隔。以下是实现此功能的 awk 命令:
示例数据file1.txt
A1 B1 C1
A2 B2 C2
A3 B3 C3
示例数据file2.txt
D1 E1
D2 E2
D3 E3
awk逐行合并:
awk 'NR==FNR {a[NR]=$0; next} {print $0 "\t" a[FNR]}' file2.txt file1.txt > output.txt
NR==FNR {a[NR]=$0; next}
:处理文件 file2.txt
时,读取每行内容并存储到数组 a 中,NR 是命令逐行处理的行号,FNR 是当前对应文件的行号。
{print $0 "\t" a[FNR]}
:处理文件 file1.txt
时,打印当前行 ($0) 并附加第一个文件中对应行号的内容(使用制表符分隔)。
合并结果
运行上述命令后,生成的 output.txt 文件的内容将如下所示:
A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3