【发布时间】:2018-11-30 06:12:27
【问题描述】:
我正在尝试将进入 awk 的文本分配给一个变量,然后更改 $0,然后输出原始字符串和更改后的字符串:
# echo "This is a test" |awk '{text=$0; gsub(/ /,"%20"); print $text; print $0;}'
This%20is%20a%20test
This%20is%20a%20test
但我希望它会返回
This%20is%20a%20test
This is a test
尝试更改#text 变量会做同样的事情。
# echo "This is a test" |awk '{text=$0; $text gsub(/ /,"%20"); print $text; print $0;}'
This%20is%20a%20test
This%20is%20a%20test
运行 DSM 6.2 的 Synology 上的 GNU Awk 4.1.3,API:1.1(GNU MPFR 3.1.3,GNU MP 6.0.0)
【问题讨论】:
-
我不认为你的第一个例子正在做你认为它正在做的事情。尝试将您从问题中包含的命令行复制到 shell 中,您就会明白我的意思。然后尝试从
print $text中删除美元符号的相同命令行,并让我们知道您的结果。