小编Har*_*rry的帖子

awk sub 用一个捕获组替换成

为此,我正在编写一个 awk oneliner:

文件 1:

1   apple
2   orange
4   pear
Run Code Online (Sandbox Code Playgroud)

文件2:

1/4/2/1
Run Code Online (Sandbox Code Playgroud)

所需的输出: apple/pear/orange/apple

附录:缺失的数字最好保持不变 1/4/2/3 = apple/pear/orange/3 以防止信息丢失。

方法:

  1. 为 file1 构建关联数组 key[$1] = $2
  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
Run Code Online (Sandbox Code Playgroud)

不幸的是,结果是 1/4/2/1

键[1]/键[4]/键[2]/键[1]

有什么建议?谢谢你。

regex unix awk

4
推荐指数
2
解决办法
128
查看次数

标签 统计

awk ×1

regex ×1

unix ×1