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

関連情報