데이터 끝의 첫 번째 행에 헤더를 씁니다.

데이터 끝의 첫 번째 행에 헤더를 씁니다.

read다른 함수의 데이터를 조작하는 루프가 있습니다 .

루프의 작업 중 하나는 "일부 열"에 가장 넓은 텍스트를 기록하는 것입니다.

루프 끝의 너비를 인쇄하고,그러나 문제는 그것을 출력 위에 놓는 것입니다.

그런 다음 이 읽기 루프가 다시 정렬되어 파일에 기록됩니다.

간단히 말하면 이렇습니다.

get_data() {
    echo "3 A B C"
    echo "2 A BB C"
    echo "4 A B CCCC"
    echo "1 A B CC"
}

make_file() {
    file_out=$1
    {
        w3=0 # max width field 3
        w4=0 # max width field 4

        while read -r f1 f2 f3 f4; do
            [ "${#f3}" -gt "$w3" ] && w3=${#f3}
            [ "${#f4}" -gt "$w4" ] && w4=${#f4}
            # + various other manipulation of the data
            echo "$f1 $f2 $f3 $f4"
        done< <(get_data)

        # Print width data at top of file:
        echo "$w3 $w4" >"$file_out"
    } | {
        #sed -u '$q'
        sort -n
    } >>"$file_out"
}

make_file test001
$ cat test001 
2 4
1 A B CC
2 A BB C
3 A B C
4 A B CCCC

문제는 이것이 파이프 등에 안전합니까? 첫 번째 추가(헤더 데이터 쓰기) 전에 마지막 추가를 호출할 수 있나요 >>file_out?>file_out

stdout예를 들어 루프를 플러시 하고 while read종료하기 sort전에 후속 쓰기를 처리할 수 있습니까 ?while

관련 정보