편리한 출력 형식

편리한 출력 형식

열을 잘 정렬하기 위해 grep 명령의 출력 형식을 지정하는 방법이 있습니까? 예를 들어:

4TO/struct-2222332/coord-2222332.out:          FINAL HEAT OF FORMATION =       -299.61496 KCAL/MOL =   -1253.58899 KJ/MOL
2E/struct-1212123/coord-1212123.out:          FINAL HEAT OF FORMATION =       -299.61496 KCAL/MOL =   -1253.58901 KJ/MOL
OT4/struct-2222121/coord-2222121.out:          FINAL HEAT OF FORMATION =       -299.61497 KCAL/MOL =   -1253.58904 KJ/MOL
E3/struct-1312322/coord-1312322.out:          FINAL HEAT OF FORMATION =       -299.61497 KCAL/MOL =   -1253.58903 KJ/MOL  

첫 번째 열에 40개의 공백을 할당하고 왼쪽부터 정렬하고 싶습니다. 마찬가지로 각 열의 예상 최대 크기를 기준으로 다른 열에도 동일한 작업을 수행합니다.

답변1

columnLinux를 사용하는 경우 명령을 사용하여 데이터를 탭으로 구분된 열 형식으로 지정할 수 있습니다 . 하지만 첫 번째 열과 다른 열에 서로 다른 열 너비를 지정할 수는 없을 것 같습니다.

bash-[24]$ column -t /tmp/output
4TO/struct-2222332/coord-2222332.out:  FINAL  HEAT  OF  FORMATION  =  -299.61496  KCAL/MOL  =  -1253.58899  KJ/MOL
2E/struct-1212123/coord-1212123.out:   FINAL  HEAT  OF  FORMATION  =  -299.61496  KCAL/MOL  =  -1253.58901  KJ/MOL
OT4/struct-2222121/coord-2222121.out:  FINAL  HEAT  OF  FORMATION  =  -299.61497  KCAL/MOL  =  -1253.58904  KJ/MOL
E3/struct-1312322/coord-1312322.out:   FINAL  HEAT  OF  FORMATION  =  -299.61497  KCAL/MOL  =  -1253.58903  KJ/MOL

다른 옵션은 및 를 사용하여 파일을 구문 분석하고, 필드를 분할하고, 열을 직접 처리하는 것 awk입니다 printf().

bash-[54]$ awk '{printf "%-40s",$1 ; $1=""; printf "%-s\n",$0}' /tmp/output
4TO/struct-2222332/coord-2222332.out:    FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58899 KJ/MOL
2E/struct-1212123/coord-1212123.out:     FINAL HEAT OF FORMATION = -299.61496 KCAL/MOL = -1253.58901 KJ/MOL
OT4/struct-2222121/coord-2222121.out:    FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58904 KJ/MOL
E3/struct-1312322/coord-1312322.out:     FINAL HEAT OF FORMATION = -299.61497 KCAL/MOL = -1253.58903 KJ/MOL

관련 정보