带有变量的 awk 打印字符串

Posted

技术标签:

【中文标题】带有变量的 awk 打印字符串【英文标题】:Awk print string with variables 【发布时间】:2016-01-02 13:04:05 【问题描述】:

如何打印带有变量的字符串?

试试这个

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

输出需要这个

/p/APPLE_abc/xyz/MANGO_abc_def/

$3 = APPLE$5 = MANGO

【问题讨论】:

你能显示file的内容吗? 【参考方案1】:

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

【讨论】:

【参考方案2】:

不那么可读,但这里不需要 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/

【讨论】:

以上是关于带有变量的 awk 打印字符串的主要内容,如果未能解决你的问题,请参考以下文章

awk 返回带有子字符串的行

shell脚本,awk在需要的行上打打印空行。

AWK - 比较后打印完整的输入字符串

我应该使用 cut 还是 awk 来提取字段和字段子字符串?

awk

awk 打印 4 列和 $8 的子字符串