我想使用 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