我正在为此编写一个awk一行命令:
文件1:
1 apple
2 orange
4 pear
文件2:
1/4/2/1
期望输出:apple/pear/orange/apple
附加说明:为了避免信息的丢失,缺失的数字应该最好保持不变,即 1/4/2/3 = apple/pear/orange/3。
方法:
- 为file1构建一个关联数组 key[$1] = $2
- 捕获斜杠之间的所有字符,并通过匹配关联数组的键将其替换,例如key[4] = pear
尝试过的方法:
gawk 'NR==FNR { key[$1] = $2 }; NR>FNR { r = gensub(/(\w+)/, "key[\\1]" , "g"); print r}' file1.txt file2.txt
#gawk because need to use \w+ regex
#gensub used because need to use a capturing group
很不幸,结果是1/4/2/1
key[1]/key[4]/key[2]/key[1]
有什么建议吗?谢谢。
1/4/2/3
,应该输出什么? - anubhava