루프를 사용하여 텍스트 파일의 2열을 다른 텍스트 파일로 복사하는 데 문제가 있습니다.

루프를 사용하여 텍스트 파일의 2열을 다른 텍스트 파일로 복사하는 데 문제가 있습니다.

file2.txt19개의 데이터 열이 포함된 텍스트 파일이 있습니다. C2와 C3, C2와 C4, C2와 C5, ..., C2와 C19 등 한 번에 2개의 열을 17개의 다른 텍스트 파일에 복사하고 싶습니다. 공통 데이터로 각 텍스트 파일에 C2 열이 필요합니다. 이를 달성하기 위해 for 루프를 사용하려고 합니다.

awk 'BEGIN { for (i = 2; i <= 19; i++) -v i="$i" '{print $2 $i}'file2.txt > filei.txt}'

하지만 다음과 같은 오류가 발생합니다.

awk: BEGIN { for (i = 3; i <= 18; i++) -v i="$i" {print
awk:                                       ^ syntax error
awk: Commnadline:1: BEGIN { for (i = 3; i <= 18; i++) -v i="$i" {print
awk:  unexpected newline or end of string

도울 수 있니?

답변1

노력하다

awk '{for (i=2;i<=NF;i++) print $1,$i > "file" i ".txt"}' file.txt

답변2

테스트를 거쳐 잘 작동함

file data

c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19

co=`awk '{print $2}' filename `

no_of_colums=`awk '{print NF}' filename`

for ((i=3;i<=$no_of_colums;i++)); do awk -v i="$i" -v co="$co" '{print co,$i}' filename>$co"c"$i ; done

관련 정보