bash에 stdin에서 한 줄을 읽고 파일에 직접 쓸 수 있는 방법이 있나요? 그것은 다음과 같습니다:
t="$(mktemp)"
while true
do
[read single line from stdin] > "${t}"
[nothing to read] && break
printf '%s\n' "$t"
t="$(mktemp)"
done
사용 가능한 메모리가 제한되어 있어 줄이 터무니없이 길어질 수 있습니다. 그렇지 않으면 나는 읽는 동안 루프를 수행할 것입니다.
편집하다:
추출과 필터링을 좀 해야 합니다. 보다 완전한 의사코드 조각은 다음과 같습니다.
f () {
t="$(mktemp)"
while true
do
[read single line from stdin] > "${t}"
[nothing to read] && break
printf '%s\n' "$t"
t="$(mktemp)"
done | while read -r file
do
if cat "$file" | grep -q '[criteria]'
then
cat "$file" | jq '[filter1]'
cat "$file" | jq '[filter2]' >> [seprate file]
[etc]
else
printf '%s\n' "There was a mismatch" > /dev/stderr
fi
rm "$file"
done
}