关于awk的gsub替换的问题?

我用

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的我已经做成功了

阅读 5.3k
2 个回答

建议把文本内容贴上来, 要不然无法贴近文本去编写命令

问题:

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

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

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

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

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

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

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进