![awk를 사용하여 여러 파일의 특정 필드를 변경하는 방법](https://linux55.com/image/190455/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%97%AC%EB%9F%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%8A%B9%EC%A0%95%20%ED%95%84%EB%93%9C%EB%A5%BC%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
저는 스크립팅 언어를 처음 접했습니다. 이름이 비슷한 형식(output1, output2 등)을 가진 여러 개의 출력 파일이 있습니다.
각 출력 파일에서 레코드는 다음 패턴을 따릅니다.
"295534
4750
4 -0.28 -0.01 -0.03 0 0 0 0 1 425.1 -1 4 0
0 0.28 -0.01 -0.025 0 0 0 0 1 425.1 -1 4 0
0 0.28 -0.01 -0.02 0 0 0 0 1 425.1 -1 4 0
....."
내가 원하는 것은 각 파일의 두 번째 행에 있는 필드를 100(예: 4750/100)으로 나누는 것입니다. 어떻게 해야 하나요?
어떤 조언이라도 주시면 감사하겠습니다.
답변1
awk 'NR==2{ $0/=100 }1' output1 >output1.fixed
여러 입력 파일에 적용됩니다.
for file in ./output*; do
awk 'NR==2{ $0/=100 }1' "$file" >fixed_"$file"
done
특정 필드(둘 이상인 경우) 및 두 번째 행 번호에 변경 사항을 적용합니다.
for file in ./output*; do
awk 'NR==2{ $1/=100 }1' "$file" >fixed_"$file"
done
$1
첫 번째 필드 값을 나타내며 변경하려는 다른 필드로 변경합니다.