我用
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的我已经做成功了
我用
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的我已经做成功了
问题:
i没有初始化,默认从0开始,END
中x从1开始,第一行不会处理;
for
循环里面两个语句gsub()
和print
,应该用{}
括起来;
print
默认打印$0
变量,但是语句在END
中,$0
始终是最后一行
gsub
中的正则,如果用/ /
括起来,里面的内容就当成了字符
gsub
中要替换成的字符串是变量,如果变量名用引号括起来,就当成了一个 字符串常量
也不知道你具体要实现什么功能,只是改了你里面明显的错误,示例如下:
建议把文本内容贴上来, 要不然无法贴近文本去编写命令