各行に,
. 各番号で何らかの操作をしたかっただけです。awk で簡単そうに見えたのですが、なぜか行き詰まってしまいました。各行を分割するために使用している配列は、最初の行で一度だけ初期化されています。その後、配列は明確になりません。split は、最初に配列をクリアしてから使用することになっていdelete array
ます。しかし、それでも問題は解決しません。どんな助けでも大歓迎です。
以下に例を示します。これはサンプルファイルです
[[bash_prompt$]]$ cat log
1,2,3
2
9
1,4
5,7
7
8
6,2
これは私が得ているものです
[[bash_prompt$]]$ awk '{print "New Line " $1; delete a; split($1,a,","); for(var in a){ print "Array Element " var; } }' log
New Line 1,2,3
Array Element 1
Array Element 2
Array Element 3
New Line 2
Array Element 1
New Line 9
Array Element 1
New Line 1,4
Array Element 1
Array Element 2
New Line 5,7
Array Element 1
Array Element 2
New Line 7
Array Element 1
New Line 8
Array Element 1
New Line 6,2
Array Element 1
Array Element 2
しかし、以下は私が期待しているものです
[[bash_prompt$]]$ awk '{print "New Line " $1; delete a; split($1,a,","); for(var in a){ print "Array Element " var; } }' log
New Line 1,2,3
Array Element 1
Array Element 2
Array Element 3
New Line 2
Array Element 2
New Line 9
Array Element 9
New Line 1,4
Array Element 1
Array Element 4
New Line 5,7
Array Element 5
Array Element 7
New Line 7
Array Element 7
New Line 8
Array Element 8
New Line 6,2
Array Element 6
Array Element 2
私のはGNU Awk 3.1.5です。また、シェルとawkの組み合わせを使用して別の方法を見つけました(awkを各行で個別に実行しています)が、何が間違っているのか知りたいです