표준 입력에서 한 줄을 읽고 파일에 쓰기

표준 입력에서 한 줄을 읽고 파일에 쓰기

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 
}

관련 정보