awkの配列の要素の削除方法
※MACターミナル(BSD系)での動作確認です。
awkの配列は連想配列となっていて、配列の要素を削除することができます。
下記のような形式で書くことにより、配列の要素を削除できます。
delete 配列の要素
例えば、配列arrayのインデックスが2の要素を削除したい場合は、下記のように書きます。
delete array[ 2 ]
配列自体を削除する場合です。
参考:awkで配列自体を削除する場合もdeleteでOK
サンプルコード
サンプルコードです。
まずは、"awk str out"をそれぞれsplitで配列arrayに格納します。
その後、配列arrayのインデックスが2の要素を削除します。
cat in.txt | awk ' BEGIN{ split( "awk str out " , array, " " ) for( i in array ) { printf "array[%s]=%s " , i , array[ i ] } printf "\nインデックスが2の要素を削除\n" delete array[ 2 ] for( i in array ) { printf "array[%s]=%s " , i , array[ i ] } } '
実行すると、下記のようにインデックスが2の要素が削除されます。
削除前と削除後に、print出力で配列の全ての要素を出力しています。
削除後には、インデックスが2の要素が削除されて出力されていないのが確認できます。
$ ./sample.awk array[2]=str array[3]=out array[1]=awk インデックスが2の要素を削除 array[3]=out array[1]=awk