スポンサーリンク

awkで文字列を連結させる方法

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

awkで文字列を連結させるには、文字列を連結したい順に列挙することで、連結した文字列として扱うことができます。
例えば、下記のように、"awk" "find" "ls"を連結した文字列として扱うには、str = "awk" "find" "ls"のように、文字列を連結したい順に列挙して、変数strに代入してあげます。変数strは、"awkfindls"の文字列として扱うことができます。

 $ cat sample02.awk 
#!/bin/sh
cat in.txt | awk '		
	BEGIN{
		str = "awk" "find" "ls"
		print str
	}
'

実行してstrをprint出力すると、文字列が連結されているのが確認できます。
 $ ./sample02.awk 
awkfindls

スポンサーリンク

awkでフィールド(列)同士を連結させる方法

awkでフィールド(列)同士を連結させる時も同様に、フィールド(列)の変数を連結したい順に列挙します。
1フィールド(列)目と2フィールド(列)目を連結させたい時には、$1 $2の順に列挙することで、連結した文字列として扱うことができます。

下記のように、in.txtがあったとします。

 $ cat in.txt 
awk ls
grep wc
find cd

下記が1フィールド(列)目と2フィールド(列)目を連結させるサンプルコードになります。
 $ cat sample01.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		print $1 $2
	}
'

実行すると、下記が1フィールド(列)目と2フィールド(列)目が連結されてprint出力されているのが確認できます。
 $ ./sample01.awk 
awkls
grepwc
findcd

スポンサーリンク

awkでフィールド(列)と文字列を連結させる方法

このケースも実際の場面ではよく使うと思います。
同様に、フィールド(列)の変数と文字列を連結したい順に列挙します。

例えば、下記のようにin.txtがあったとします。

 $ cat in.txt 
2016 1 1
2017 2 2
2018 3 3

下記が、フィールド(列)と文字列を連結するサンプルコードになります。
 $ cat sample.awk 
#!/bin/sh
cat in.txt | awk '		
	{
		print $1 "年" $2 "月" $3 "日" 
	}
'

実行すると下記のように、フィールド(列)と文字列を連結されて、日付が出力されているのが確認できます。
 $ ./sample.awk 
2016年1月1日
2017年2月2日
2018年3月3日

その他:文字列操作の参考記事

その他のよく使う文字列操作について、参考記事を書いていますのでご紹介です。

awkのsubstr()で、切り出し開始位置と長さを指定して文字列を切り出すことができます。
参考記事:awkでsubstr()を使って文字列を切り出す方法

文字列置換関数のgsub()も私自身よく使います。よろしければ下記リンクの記事をご参考ください。
参考記事:awkの文字列置換関数gsub()の使い方

スポンサーリンク