请在下面找到输入文件 – file1 和 file2,并获取 file3 中的输出。
请在 awk 中使用 –GSUB
文件1:
000000018*A00045425530
000000022*A00002122779
000000032*A00051046521
000000035*A00008977353
000000052*A00050659539
文件2:
A00045425530 *204***204***0.01**********1**1*****18**0****1***********0.01***0**0***0 (EOR)
A00020515159 *6071***6071*************1**1*****26**0****1***0*0**0***0*****0**0***0 (EOR)
A00002122779 *****************1*************1****************0***0 (EOR)
A00002293889 ********************************************0**0***0 (EOR)
A00008977353 *****************1*************1****************0***0 (EOR)
匹配 AGN(文件 1 中的字段 2 和文件 2 中的字段 1),并使用 awk 中的 gsub 将“(EOR)”从匹配的输出中删除为 null。输出应如下所示:
文件3输出:
A00045425530 *204***204***0.01**********1**1*****18**0****1***********0.01***0**0***0
A00002122779 *****************1*************1****************0***0
A00008977353 *****************1*************1****************0***0
答案1
awk 'NR==FNR{ a[$2] }
NR!=FNR && $1 in a{
gsub(/\s+\(EOR\)/, "")
print
}
' FS='*' file1 FS=' ' file2 > file3
读取第一个文件时,用作*
输入字段分隔符,并使用第二个字段作为数组的索引a
(具有空值)。
读取第二个文件时,使用空格字符作为输入字段分隔符,并测试第一个字段是否作为 array 中的索引存在a
。如果条件为真,则用(EOR)
空字符串替换后面的所有空格字符并打印当前行。输出被重定向到file3
.