1行に複数のawkコマンドを使用する

1行に複数のawkコマンドを使用する

私がしたいことは次のとおりです。私のデータは同じファイルの行セットにあります。 (vaa vbb変数はこれを繰り返して必要に応じて制御できます。)
必要なのは、次の項目を作成する前に追加の列を追加することです。ファイルのデータは、基本的に各データセットを繰り返すカウンタです。

例:データ行5-8の場合はSet1、データ行14-29の場合はSet2など。

Required output:

1,row5 data
1,row6 data
1,row7 data
1,row8 data
2,row14 data
2,row15 data
.
.
.
2,row29 data
.
.
.

====== Code below ======

awk -v vaa=$varAA -v vbb=$varBB -v vcc=$varC 'NR>=vaa&&NR<=vbb' $I >> part_${I%.*}.csv

csvファイルにファイルを書き込んでいます。行とカウンタ変数のセットを処理できます。ただし、変数$ varC(増分カウンター付き)を使用してデータを提供するために追加の列を追加できるコードスニペットを作成することはできません。

いくつかのフォーラムを見た結果、使用法/例は印刷用または既存のデータセットに列を追加する目的でのみ使用されました。

私はbashコーディングに初めて触れたので、これを達成する方法を理解できません。すべての助けに感謝します。

ありがとうございます。

編集:出力_A.csvにはデータが含まれています。出力_A.txtには、どの地域がデータセットであるかに関する情報が含まれています。 (私が処理したいくつかのタスクごとの算術が必要です。)たとえば、txtファイルデータ:100 200 xyz以下は参照用の完全なコードです。

for I in 'output_A.csv';
do

varC=0
while read line
do

varC=$(( varC + 1 ))

varA=${line%%,*}
varB=$(echo "$line" | cut -d',' -f2- | rev | cut -d',' -f2- | rev)

varAA=$(echo "$varA * 100" | bc -l)
varBB=$(echo "$varB * 100" | bc -l)

#echo -e $varA ' \t' $varB ' \t' $line

awk -v vaa=$varAA -v vbb=$varBB -v vcc=$varC 'NR>=vaa&&NR<=vbb' $I >> part_${I%.*}.csv

done < ${I%.*}.txt

done

ベストアンサー1

私が理解したのは、awkコマンドを次のように変更する必要があります。

'NR>=vaa&&NR<=vbb'

到着

'NR>=vaa&&NR<=vbb { print vcc "," $0 }'

おすすめ記事