한 줄에 여러 awk 명령 사용

한 줄에 여러 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 }'

답변2

형식 파일 설명에 따르면

awk -F',' 'FNR==NR{
               for(i=($1*100),i<=($2*100);i++)
                   portion=FNR
               next }
           { print portion[FNR], $0 }
          ' output_A.txt output_A.csv >> output_A.result

관련 정보