read
他の関数のデータを操作するループがあります。
ループの作業の1つは、「一部の列」に最も広いテキストを記録することです。
ループの端の幅を印刷し、しかし、問題はそれを出力の上に置くことです。
その後、この読み取りループが並べ替えられ、ファイルに書き込まれます。
簡単に言えばこんな感じです。
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