![awk 명령을 사용하여 텍스트 파일 형식 지정 [닫기]](https://linux55.com/image/109495/awk%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%20%ED%98%95%EC%8B%9D%20%EC%A7%80%EC%A0%95%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
나는 다음 명령을 사용하고 있습니다 :
awk 'NR>1 {print $1" "$2}' fort.75 > newfort.75
출력을 다음과 같이 얻습니다.
7 -2.2964292555E+000
8 -2.3013363831E+000
9 -2.3071951989E+000
10 -2.3136811351E+000
11 -2.3207311925E+000
하지만 필수 o/p는 다음과 같습니다.
7 -2.2964292555E+000
8 -2.3013363831E+000
9 -2.3071951989E+000
10 -2.3136811351E+000
11 -2.3207311925E+000
첫 번째 필드의 값은 모두 동일한 너비가 되도록 형식을 지정해야 합니다. 또한 두 번째 필드는 각 행의 동일한 열에서 시작해야 합니다.
답변1
아마도 출력을 열 단위로 원한다는 뜻일 것입니다(귀하의 예에서는 데이터도 다르지만). 그렇다면 다음을 시도해 보십시오.
awk 'NR>1 {print $1 "\t" $2}' fort.75 > newfort.75
그러면 출력이 탭으로 구분됩니다 \t
.
printf
또 다른 가능성은 Archemar가 제안한 대로 사용하는 것입니다.
awk 'NR>1 {printf("%4i %f\n",$1,$2);}' fort.75 > newfort.75
첫 번째 열의 형식은 (이 경우) 4자 너비로 지정됩니다. 필요에 따라 조정하세요. 공백은 공백 ""(말장난 의도 없음)으로 채워지며 탭 문자는 사용되지 않습니다. 그러나 부동 소수점 숫자도 형식이 변경되므로 이 방법이 적합한지 확인하세요. 그렇지 않은 경우 두 번째 열을 문자열로 처리합니다.
awk 'NR>1 {printf("%4i %s\n",$1,$2);}' fort.75 > newfort.75