一行不解的awk代码

分享下面这个脚本(不是我写的, 我看到的). 这是awk非常入门的用法, 我awk水平也很低. 但对我来说, 这个写法却很聪明, 有新意.

下面这行是个完整的脚本, 用于进制转换

echo |awk "{printf("%$2
",$1)}"
  • 第一个问题是, echo的作用是什么? echo的作用是, 告诉awk, 不用等待输入了, 没有的, 因为它什么也没输出. 因此上面这个脚本也可以不要echo, 可以这么写awk "BEGIN {printf("%$2 ",$1)}"
  • 第二个问题是, 这里$1$2显然是作为shell script的输入, 但这两个变量在awk中本身也有含义, 怎么回事? 原因很简单, 注意到一个细节, awk通常是用single quote, 这里用的却是double quote, 并不是想怎样都可以, 这里为了用shell script的参数, 必须用double quote, 这样才会发生变量展开. 因此在awk执行之前, 就已经被替换为参数了.
原文地址:https://www.cnblogs.com/Tokubara/p/14376172.html