awk - 打印带有后缀的所有值

awk - 打印带有后缀的所有值

我想使用 awk 打印分隔字符串中的所有值,并在每个值后附加一个静态后缀。

输入:

stack,over,flow

分隔符:

Comma

输出:

stack suffix, over suffix, flow suffix

答案1

awk -F ',' -v OFS=',' -vpre="prefix" -vsuf="suffix" \
    '{ for (i=1;i<=NF;++i) $i = pre $i suf; print }'

对于输入

unix,and,linux

这会产生

prefixunixsuffix,prefixandsuffix,prefixlinuxsuffix

awk程序通过添加前缀和后缀来修改循环中的每个字段。前缀和后缀字符串awk通过命令行上的pre和变量赋值传递到程序中。suf

要添加空格作为前缀和字符串suffix(带有初始空格)作为后缀,您可以使用

awk -F ',' -v OFS=',' -vpre=" " -vsuf=" suffix" \
    '{ for (i=1;i<=NF;++i) $i = pre $i suf; print }'

产生

 unix suffix, and suffix, linux suffix

答案2

另一个 Awk 变体 - 利用内部输出分隔符来避免显式循环:

awk -F, -v s=' suffix' 'BEGIN{OFS= s FS " "; ORS= s RS} {$1=$1} 1'

前任。

echo 'stack,over,flow' | awk -F, -v s=' suffix' 'BEGIN{OFS= s FS " "; ORS= s RS} {$1=$1} 1'
stack suffix, over suffix, flow suffix

对于空格分隔的输出,您可以将默认输出字段分隔符附加到后缀

$ echo 'stack,over,flow' | awk -F, -v s=' suffix' 'BEGIN{OFS= s OFS; ORS= s RS} {$1=$1} 1'
stack suffix over suffix flow suffix

答案3

awk -F , '{print $1" suffix",  $2" suffix",  $3" suffix"}' OFS=", " suffix

awk -F ,将字段分隔符设置为 ,

print $1" suffix",依此类推打印一个空格,然后在值后面添加后缀

OFS=", "将输出字段分隔符设置为带空格的逗号。

输出:

 stack suffix, over suffix, flow suffix

相关内容