关于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的我已经做成功了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
建议把文本内容贴上来, 要不然无法贴近文本去编写命令
问题:
i没有初始化,默认从0开始,
END
中x从1开始,第一行不会处理;for
循环里面两个语句gsub()
和print
,应该用{}
括起来;print
默认打印$0
变量,但是语句在END
中,$0
始终是最后一行gsub
中的正则,如果用/ /
括起来,里面的内容就当成了字符gsub
中要替换成的字符串是变量,如果变量名用引号括起来,就当成了一个 字符串常量也不知道你具体要实现什么功能,只是改了你里面明显的错误,示例如下: