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