awk 명령을 사용하여 텍스트 파일 형식 지정

awk 명령을 사용하여 텍스트 파일 형식 지정

나는 이 명령을 사용하고 있습니다 :

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

그러면 출력이 TAB 문자로 구분됩니다 \t.

printf또 다른 가능성은 Archemar가 제안한 대로 사용하는 것입니다 .

awk 'NR>1 {printf("%4i %f\n",$1,$2);}' fort.75 > newfort.75

첫 번째 열의 형식은 (이 경우) 4자 너비로 지정됩니다. 원하는 대로 조정하세요. 공간은 공백 " "(말장난 의도 없음)으로 채워지며 TAB은 사용되지 않습니다. 그러나 부동 소수점 숫자도 다시 형식화되므로 이것이 괜찮은지 확인하십시오. 그렇지 않은 경우 두 번째 열을 문자열로 처리합니다.

awk 'NR>1 {printf("%4i %s\n",$1,$2);}' fort.75 > newfort.75

관련 정보