如何在shell脚本中将awk的输出获取到数组中

时间:2018-10-24 14:17:47

标签: linux shell awk

我正在比较两个文件并显示不相似的行, 当我保持

echo $(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2)

我能够获取值。

当我尝试通过传递给array来做同样的事情时,出现“:command not found”错误

declare -a myarr=()
myarr=$("$(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2 )")

请帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

删除报价加前导美元:

myarr=$("$(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2 )")

应该是

myarr=($(awk 'FNR==NR{f[$0]+=1; next} !($0 in f)' $file1 $file2))

检查:


顺便说一句,您的awk命令不会打印file1独有的行。可能是您想要的comm命令,但是请注意comm需要排序的输入:

comm -13 <(sort "${file1}") <(sort "${file2}")