2012-09-21 1 views
1

쉘 스크립트에서 awk를 사용하고 있는데 예상대로 작동합니다. 나는 열 수를 변경해야하는 경우awk의 열 인쇄

awk -F'^' 'BEGIN {OFS="^"} {print $1,$2,$3,$4,$5}' 

, 나는 단순히 변수에 선언하고 AWK에서 그 변수를 사용하는 방법이 있나요 $ 6 $ 7 $ (8)

을 추가하여 인쇄 문을 변경 ?

columns=8 
awk -F'^' 'BEGIN {OFS="^"} {print $1..$columns}' 

답변

1

당신은 항상 당신에게 줄 끝에 줄 바꿈을 줄 것이다 printf 루프 후 print를 사용하여 for -loop

{for(i=1;i<=columns;i++)printf("%s ", $i);print '\n'}' 

를 사용할 수 있습니다.

2

당신은 awk -v를 사용하여 쉘 변수를 지정할 수 있습니다, 다음 루프 모든 열을 통해 :

awk -v cols="$columns" '{ for (i=1; i<=cols; i++) printf (i!=cols) ? $i OFS : $i"\n" }' file.txt 
3

할 일을 그것은 함수를 정의함으로써 가능합니다. awk 'function col(s,e){ret="";for(i=s;i<=e;i++){ret=ret" "$i}return ret}{print col(2,6)}'

1

이 당신을 위해 작동 될 수 있습니다

echo 1 2 3 4 5 6 7 8 9 | awk -vnf=5 '{NF=nf}1' 
1 2 3 4 5