2015-01-27 5 views
1

awk를 사용하여 일부 파일을 작업하고 싶습니다.awk로 데이터를 분할하는 방법

입력 :

a  2 16 
b 17 25 
c 26 32 
d 33 51 

와 내가 원하는 것은 예를 들어 2로 숫자를 증가, 2 열 및 3 열 사이의 범위를 열거하는 모든 행을 분할하는 것입니다

나는이 같은 파일이
a 2 4 6 8 10 12 14 16 
b 17 19 21 23 25 
c 26 28 30 32 
d 33 35 37 39 41 43 45 47 49 51 
+3

그것은 2 – Barmar

+1

씩 증가하여 시도를 보여하시기 바랍니다 단순한'for' 루프입니다, 우리는 당신을 위해 일을 여기 아니에요. 작동시키지 못하면 해결하도록 도와 드리겠습니다. – Barmar

+1

$ 2가 홀수이고 $ 3이 짝수 일 경우 어떻게해야합니까? 예를 들어, 범위는 2의 배수가 아닙니다. –

답변

4
$ awk ' { printf("%-3s", $1) 
>   for (i=$2; i<=$3; i+=2) 
>    printf ("%-3d", i) 
>   printf("\n") } ' <<EOF 
> a 2 16 
> b 17 25 
> c 26 32 
> d 33 51 
> EOF 
a 2 4 6 8 10 12 14 16 
b 17 19 21 23 25 
c 26 28 30 32 
d 33 35 37 39 41 43 45 47 49 51 
+1

'printf ("\ n")'대신에'print ""'를 사용할 수 있습니다 - 조금 깔끔합니다. –