在 awk 中使用 gsub

在 awk 中使用 gsub

请在下面找到输入文件 – 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.

相关内容