Awkには、$ 1と$ 2の2つのフィールドがあります。
どちらも文字列であり、連結して変数に割り当てます。
あなたは言うことができます:
awk '{b=$1$2; print b}' file
間にスペースを置きたい場合は、次のようにします。
awk '{b=$1" "$2; print b}' file
実際には、FS
を使用するのと同じです。デフォルトはスペースです。
awk '{b=$1 FS $2; print b}' file
$ cat a
hello how are you
i am fine
$ awk '{b=$1$2; print b}' a
hellohow
iam
$ awk '{b=$1 FS $2; print b}' a
hello how
i am
Ideoneでそれをいじることができます: http://ideone.com/4u2Aip
sprintf
を使用してこれを実現できます。
awk '{str = sprintf("%s %s", $1, $2)} END {print str}' file
Awkで文字列を連結するには、印刷コマンド AWKマニュアルページ を使用します。複雑な組み合わせを行うことができます。ここでは、16文字をAに変更しようとして、文字列連結を使用しました。
echo CTCTCTGAAATCACTGAGCAGGAGAAAGATT | awk -v w=15 -v BA=A '{OFS=""; print substr($0, 1, w), BA, substr($0,w+2)}'
Output: CTCTCTGAAATCACTAAGCAGGAGAAAGATT
Substr関数を使用して、入力の一部(STDIN)を抽出しました。通常はシェル変数であるいくつかの外部パラメーター(ここではハードコードされた値を使用しています)を渡しました。シェルプログラミングのコンテキストでは、-v w = $ width -v BA = $ my_charvalと書くことができます。キーはOFSで、awkのOutput Field Separateを表します。印刷機能は値のリストを取り、それらをSTDOUTに書き込み、OFSでそれらを接着します。これは、Perlの結合機能に似ています。
Awkでは、変数を隣同士に出力することで文字列を連結できるように見えます:
echo xxx | awk -v a="aaa" -v b="bbb" '{ print a b $1 "string literal"}'
# will produce: aaabbbxxxstring literal
複数行にわたる文字列を空白で連結することもできます。
cat file.txt Apple 10オレンジ22ブドウ7
例1:
awk '{aggr = aggr "" $ 2} END {print aggr}' file.txt
10 22 7
例2:
awk '{aggr = aggr "、" $ 1 ":" $ 2} END {print aggr}' file.txt
、アップル:10、オレンジ:22、ブドウ:7