10행부터 20행까지 세 번째(두 번째) 열에 상수 값을 추가하고 싶습니다. 수행하는 방법? 이 코드를 시도해 보았는데 제대로 작동하는 것 같습니다. 그것은 나에게 동일한 출력 파일을 제공합니다. 누군가 왜 이것이 더 잘 작동하는지 설명할 수 있습니까?
awk '{if(NR>9) $3=$3+1; print $0}' <file_input > file_output
이 경우 awk를 사용하는 것보다 더 나은 해결책이 있다고 생각하십니까? 알려주세요. 감사합니다. 모두에게 행운을 빕니다.
이것은 input_file의 헤더입니다
SCAN U=3
1.0
+7.2621642310 +0.0000000000 +0.0000000000
+0.0000000000 +7.4947599620 +0.0000000000
-0.4702406680 +0.0000000000 +50.5797763000
O W
56 20
Selective
Cartesian
+6.9271068928 +7.2623406786 33.3906 T T T
...다음과 같이 계속하면 예상되는 결과는 다음과 같습니다.
SCAN U=3
1.0
+7.2621642310 +0.0000000000 +0.0000000000
+0.0000000000 +7.4947599620 +0.0000000000
-0.4702406680 +0.0000000000 +50.5797763000
O W
56 20
Selective
Cartesian
+6.9271068928 +8.2623406786 34.3906 T T T
그리고 연산 결과의 소수점 이하 정밀도는 어떻게 설정하나요?
답변1
나는 그것을 알아
awk 'NR>9 && NR<21{
printf "%s %+.10f %.4f %s %s %s\n",$1,1+$2,1+$3,$4,$5,$6;
next ; }
{print}'
어디
printf
포맷을 위해%+.10f
최고의 정확도를 자랑하는 10개의 플로트가 있습니다.+- 고정된 수의 필드 사용
- 한 줄로 작성해도 됩니다. 읽기용으로 구분했습니다.
귀하의 경우에 따라 locale
접두사를 추가해야 할 수도 있습니다.LANG=C
예를 들어
LANG=C awk '...'
내 프랑스 지역 회선은
+6.9271068928 +8,0000000000 34,0000 T T T
답변2
awk 'NR>9 && NR<21{$2=$2+1;$3=$3+1}{print}' <file_input > file_output
~에 귀속됨콰지모도