-1

我用

cat dict.txt | awk '{a[i]=$1;b[i]=$2;i++}END{for(x=1;x<i;x++)print a[x],b[x]}' 

能成功运行
现在想用

cat dict.txt | awk '{a[i]=$1;b[i]=$2;i++}END{for(x=1;x<i;x++)gsub(/a[x]/,"b[x]");print}' data.txt

却不成功,请问该如何改,要求只用awk
附:sed的我已经做成功了

查看全部 2 个回答

0

问题:

  1. i没有初始化,默认从0开始,END中x从1开始,第一行不会处理;

  2. for循环里面两个语句gsub()print,应该用{}括起来;

  3. print默认打印$0变量,但是语句在END中,$0始终是最后一行

  4. gsub中的正则,如果用/ /括起来,里面的内容就当成了字符

  5. gsub中要替换成的字符串是变量,如果变量名用引号括起来,就当成了一个 字符串常量

也不知道你具体要实现什么功能,只是改了你里面明显的错误,示例如下: