2016年6月16日木曜日

シェルスクリプトで文字列を結合する


How to concatenate strings in shell script?

input file: input.txt
foo
bar 

expected results: output.txt
foo_awesome
bar_awesome

STR=_awesome
cat input.txt | xargs -n1 -d'\n' printf "%s %s\n" $STR | awk '{printf "%s%s\n", $2, $1}' > output.txt

Isn't it awesome?
解説
catでファイル内容を読み込みその内容とSTR変数をxargsを使いprintfの引数として渡す。
つまりprintf "%s %s\n" _awesome fooが一番目に呼ばれることになる。空白を挟んで _awesome foo という行を作り出し標準出力している。本当はここで整形を済ませたいがprintfコマンドが引数の順序を指定できず自由度が低いためawkのprintfで本格的に整形している。そして標準出力をファイルにリダイレクトして完了。


2 string variables version.

expected results: output.txt
prefoo_awesome
prebar_awesome
STR2=pre 
STR=_awesome
cat input.txt | xargs -n1 -d'\n' printf "%s %s %s\n" $STR $STR2 | awk '{printf "%s%s%s\n", $2, $3, $1}'  > output.txt

0 件のコメント :

コメントを投稿