我试图使用引用ref
文件的第二列作为匹配条件,并更改另一个main
文件的第一列,以匹配关键字的行。更新文件写入out
。下面是一个例子。我的shell脚本不工作。我感谢你的帮助。
ref
PSHELL 216 136738
PSHELL 217 136738
PSHELL 1786 13571
PSHELL 1605 136513
字符串
联系我们
PSHELL 216 136738
PSHELL 218 136738
PSHELL 1786 13571
PSHELL 1610 136513
PSHELL 1612 136513
型
出去
+PSHELL 216 136738
PSHELL 218 136738
+PSHELL 1786 13571
PSHELL 1610 136513
PSHELL 1612 136513
型
我的代码
awk '
FNR == NR { # if record from 1st file
item[++n] = $2 # store in indexed item array
next # skip to next record
}
{ main[++m] = $0 } # for 2nd file, store record in main
END { # after all records processed
for (i=1; i<=n; i++) # loop over all items
for(j=1; j<=m; j++) { # loop over each record in main
line = main[j] # save record in line
if (j == 2) # if 2nd record in main
[$2]=+[$2]
print line >> item[i] # append line to item file
}
}
' ref main > out
型
Error第11行:错误
1条答案
按热度按时间ehxuflar1#
[$2]=+[$2]
不是有效的awk
语法。在这种情况下,没有理由在解析第二个文件后等待(main
)来打印END
块中的输出。你可以在解析main
时动态打印。无论如何,对于这种处理,你应该使用关联数组而不是索引数组,in
操作符测试一个元素是否是item
的键:字符串
变量:您也可以有条件地修改
$0
:型