텍스트 파일의 열에 반복적으로 값을 추가합니다.

텍스트 파일의 열에 반복적으로 값을 추가합니다.

3개의 열(XYZ 좌표)이 있는 텍스트 파일이 있는데 원본 파일의 끝에 추가하면서 첫 번째 열에 상수를 반복적으로 추가해야 합니다. 여러 가지 옵션을 시도했지만 이것이 내가 하려는 작업을 가장 잘 보여주는 옵션입니다.

awk ' { for ( i=-4; i<=4; i+=2 ) $1+=i }' coords.txt >> new_coords.txt

이 명령은 빈 new_coords.txt 파일을 생성합니다. for 루프의 출력을 새 텍스트 파일로 가져오는 방법은 무엇입니까?

최소 입력

4 5 6 
7 8 9

최소 출력

0 5 6
3 8 9 
2 5 6 
5 8 9
4 5 6
7 8 9
6 5 6
9 8 9
8 5 6
11 8 9

답변1

내 생각에 이것은 Awk 외부에 루프를 두는 것이 실제로 의미가 있는 (드문) 사례 중 하나일 수 있습니다.

$ for ((i=-4;i<=4;i+=2)); do awk -v i="$i" '{$1+=i} 1' Input; done
0 5 6
3 8 9
2 5 6
5 8 9
4 5 6
7 8 9
6 5 6
9 8 9
8 5 6
11 8 9

그렇지 않으면:

$ awk '{a[NR] = $1; b[NR] = $2 FS $3} END{for(i=-4;i<=4;i+=2){for(j=1;j<=NR;j++) print a[j]+i, b[j]}}' Input 
0 5 6
3 8 9
2 5 6
5 8 9
4 5 6
7 8 9
6 5 6
9 8 9
8 5 6
11 8 9

관련 정보