테이블 형식으로 파일에 기록

테이블 형식으로 파일에 기록

print메일에 첨부 파일로 전송될 스크립트를 통해 파일에 무언가를 쓰려고 합니다 .

이제 파일에 올바른 형식을 유지하려고 합니다. HTML 테이블과 유사한 테이블 형식을 인쇄하고 유지할 수 있습니까?

루프에서 코드가 다음과 같은 내용을 추가한다고 가정합니다.

       `print "|App Name:$1\tRegion:$2\tEnvironment:$3| >> file_attch.dat`

이제 매개변수 크기는 다양할 수 있습니다. 예를 들어 $1은 7~10자, $2는 5~15자, $3는 10~20자가 될 수 있습니다. 이제 서로 다른 문자 길이의 연속 행 첨부를 인쇄하는 것이 이상해 보입니다.

처음 10자를 1달러로 예약하고 15자를 2달러로 예약한 다음 20자를 3달러로 예약할 수 있습니다. print목적을 달성할 수 있는 형식의 유형입니다.

고쳐 쓰다:

어쩌면 내가 질문을 올바르게하지 않았을 수도 있습니다. 예는 다음과 같습니다.

    App:PROPIA  Region:silo2   Env:INT
    App:SRO  Region:silo3   Env:SYS

위의 경우 PROPIA와 SRO는 문자 길이에 따라 다르기 때문에 표 형식이 유지되지 않습니다. 나는 다음과 같은 것을 원합니다 :

    App:PROPIA  Region:silo2   Env:INT
    App:SRO     Region:silo3   Env:SYS

예를 들어 실제 문자 길이에 관계없이 첫 번째 매개변수에 10자를 예약하고 두 번째 매개변수에 다음 10자를 예약합니다.

답변1

printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"

이는 세 문자열에 대해 10, 15, 20자를 예약하고 해당 공간 내에서 문자열을 왼쪽 정렬합니다.

예시 스크립트:

set -- PROPIA silo2 INT SRO silo3 SYS
while [ "$#" -gt 0 ]; do
    printf 'App:%-10s\tRegion:%-15s\tEnv:%-20s\n' "$1" "$2" "$3"
    shift 3
done

산출:

App:PROPIA      Region:silo2            Env:INT
App:SRO         Region:silo3            Env:SYS

관련 정보