关于awk的gsub替换的问题?

发布于 2022-09-04 20:23:38 字数 310 浏览 7 评论 0

我用

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

念三年u 2022-09-11 20:23:38

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

坐在坟头思考人生 2022-09-11 20:23:38

问题:

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

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

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

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

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

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

clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文