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