GNU/Linux >> Linux の 問題 >  >> Linux

改行で終わらない可能性のある行指向のファイルを読みますか?

/tmp/urlFileという名前のファイルがあります ここで、各行はURLを表します。次のようにファイルから読み取ろうとしています:

cat "/tmp/urlFile" | while read url
do
    echo $url
done

最後の行が改行文字で終わっていない場合、その行は読み取られません。なぜだろうと思っていましたか?

改行で終わっているかどうかに関係なく、すべての行を読み取ることは可能ですか?

承認された回答:

あなたがすること:

while IFS= read -r url || [ -n "$url" ]; do
  printf '%sn' "$url"
done < url.list

(事実上、そのループは最後の(非)行に欠落している改行を追加し直します。)

  • シェルループを使用してテキストを処理するのはなぜ悪い習慣と見なされるのですか?
  • 「IFS=read -rline」を理解しますか?
  • printfがechoよりも優れているのはなぜですか?

Linux
  1. ファイルの最後に改行を追加するにはどうすればよいですか?

  2. 「#」または「;」で始まらない行をgrepする方法は?

  3. 改行をNulに置き換えますか?

  1. Sedの行末に単語を追加しますか?

  2. Vimでファイルの最初または最後に移動する[クイックヒント]

  3. read(2) は EOF でないときにゼロを返すことができますか?

  1. まだファイルにない場合にのみ、ファイルに行を追加します

  2. Linux - ファイルの末尾に空行があるかどうかを確認する

  3. bash の改行でテキストをエコーする