我的要求是将2个文件比作第一个文件的第2个字段和第2个文件的最后一个字段,第2个文件的匹配记录应该写入新文件。
任何人都可以为此提供解决方案吗?
文件1:
aaa,ABC123
bbb,ABC234
ccc,ABC789
file2的:
123,QWER124,HHHHH,YYYYY,ABC123
145,WWWW12,HHHTLR,IEIRJ,ABC2345
125,SJHJSD,HJHJ,OOOP,ABC789
所需的输出
123,ABC123,QWER124,HHHHH,YYYYY
125,ABC789,SJHJSD,HJHJ,OOOP
答案 0 :(得分:2)
使用awk
:
awk '
BEGIN { FS = OFS = "," }
NR==FNR { fld[$2] = $1; next }
($2 in fld) { print $1, fld[$2], $2, $3, $4, $5 }
' file1 file2
123,aaa,ABC123,QWER124,HHHHH,YYYYY
125,ccc,ABC789,SJHJSD,HJHJ,OOOP
我们在BEGIN
块中设置输入和输出字段分隔符。 FS=OFS=","
将其设置为,
。 NR==FNR
允许我们首先读取file1。我们创建一个数组fld
,它使用column2的键保存column1的值。完全读取file1后,我们将移至file2。我们检查数组中是否存在第二列。如果是,我们只按照您的输出打印它们。