awk 특정 행의 특정 열 바꾸기

awk 특정 행의 특정 열 바꾸기

내 데이터 파일은

sdfsdfsdf
1 0.5000 0.5000 0.5000 8 7 90 135  90 135 1 
2 0.5000 0.5000 0.0000 8 7 90 -45  90 -45 1 
3 0.0000 0.5000 0.5000 8 7 90 225  90 225 1 
4 0.5000 0.0000 0.5000 8 7 90 45   90 45  1 
sdfsdfsdf
sdfsdfsdfsdfsdfsdfsdf

7열과 9행 2~5행을 변경하여 결과는 다음과 같습니다.

sdfsdfsdf
1 0.5000 0.5000 0.5000 8 7 60 135  60 135 1 
2 0.5000 0.5000 0.0000 8 7 60 -45  60 -45 1 
3 0.0000 0.5000 0.5000 8 7 60 225  60 225 1 
4 0.5000 0.0000 0.5000 8 7 60 45   60 45  1 
sdfsdfsdf
sdfsdfsdfsdfsdfsdfsdf

sed나 awk를 사용하여 이 작업을 어떻게 수행할 수 있나요? 나는 노력했다

awk 'NR>=2&&NR<=5{$7="60"}' input.dat > tmp && mv tmp input.dat

하지만 이건 작동하지 않아

답변1

노력하다:

awk 'FNR==2,FNR==5{$7=$9=60};1' input.dat > tmp

답변2

다음과 같이 스크립트를 수정합니다.

awk '{if (NR>=2&&NR<=5) $7=60; print}' input.dat > tmp && mv tmp input.dat

변형에서 관찰된 문제는 명시적인 인쇄 절이 없으면 awk가 입력 행을 인쇄하기 때문입니다.

관련 정보