標準入力から1行を読み込んでファイルに書き込む

標準入力から1行を読み込んでファイルに書き込む

bashにstdinから1行を読み、ファイルに直接書き込む方法はありますか?それは次のとおりです。

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 
}

ベストアンサー1

おすすめ記事