awk 不能同时打印一个数组和一个位置参数

awk can not print an array and a position parameter at the same time

awk 不能同时打印一个数组和一个位置参数

hehe.txt —> 23402269,55
haha.txt —> 23402269,108147883084318723015500000055,1,0

--

无法获得 [$1] 值

awk -F"," '{if(NR==FNR){a[] = }else{if( in a){print a[]" | "[=11=]}}}' hehe.txt haha.txt

awk -F"," '{if(NR==FNR){a[] = }else{if( in a){printf("%s | %s\n",a[],[=12=])}}}' hehe.txt haha.txt

结果

| 23402269,108147883084318723015500000055,1,0

--

使用 printf 和 %d,我可以得到正确的结果

awk -F"," '{if(NR==FNR){a[] = }else{if( in a){printf("%d | %s\n",a[],[=14=])}}}' hehe.txt haha.txt

结果

55 | 23402269,108147883084318723015500000055,1,0

--

问:不知道为什么,谢谢。

如前所述,检查是否有任何控制 M 字符,如果您需要删除它们,请使用以下命令,然后使用 运行 您的命令。(如果您有 dos2unix 实用程序 运行 它在你的 Input_file 上去掉控制 M 字符)

tr -d '\r' < Input_file > temp_file && mv temp_file Input_file