使用变量打印字符串的Awk命令

32

如何使用变量打印字符串?

尝试这样做:

awk -F ',' '{printf /p/${3}_abc/xyz/${5}_abc_def/}' file

需要输出这个内容

/p/APPLE_abc/xyz/MANGO_abc_def/

其中${3} = 苹果${5} = 芒果


你能显示file的内容吗? - Jose Ricardo Bustos M.
2个回答

34

printf 允许变量插值。使用以下代码作为测试文件:

$ cat file
a,b,APPLE,d,MANGO,f

我们可以使用printf按以下方式实现您想要的输出:
$ awk -F, '{printf "/p/%s_abc/xyz/%s_abc_def/\n",$3,$5;}' file
/p/APPLE_abc/xyz/MANGO_abc_def/

printf 中,字符串 %s 表示将变量插入此处作为字符串。 我们有两个 %s 的实例,一个是用于 $3,另一个是用于 $5

19

阅读起来不太方便,但这里并不需要printf。如果将字符串部分加上引号,Awk可以直接将变量插入到字符串中。

$ cat file.txt
1,2,APPLE,4,MANGO,6,7,8


$ awk -F, '{print "/p/" $3 "_abc/xyz/" $5 "_abc_def/"}' file.txt
/p/APPLE_abc/xyz/MANGO_abc_def/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接