将标题写入数据末尾的第一行

将标题写入数据末尾的第一行

有一个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

相关内容