GNU/Linux >> Znalost Linux >  >> Linux

Číst řádkově orientovaný soubor, který nemusí končit novým řádkem?

Mám soubor s názvem /tmp/urlFile kde každý řádek představuje url. Snažím se číst ze souboru následovně:

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

Pokud poslední řádek nekončí znakem nového řádku, tento řádek se nepřečte. Zajímalo by mě proč?

Je možné číst všechny řádky, bez ohledu na to, zda jsou ukončeny novým řádkem nebo ne?

Přijatá odpověď:

Udělali byste:

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

(ve skutečnosti tato smyčka přidá zpět chybějící nový řádek na posledním (ne)řádku).

  • Proč je používání shellové smyčky ke zpracování textu považováno za špatný postup?
  • Rozumíte „IFS=read -r line“?
  • Proč je printf lepší než echo?

Linux
  1. Zaneprázdněná schránka Číst soubor řádek po řádku?

  2. Jak Grep linky, které nezačínají "#" nebo ";"?

  3. Přidání slova na konec řádku se Sedem?

  1. Může read(2) vrátit nulu, když není na EOF?

  2. přidat řádek do souboru POUZE pokud v souboru již není

  3. wc -l NEpočítá poslední soubor, pokud nemá znak konce řádku

  1. Zmenšete velikost PDF pomocí tohoto triku s příkazovým řádkem

  2. Linux - zkontrolujte, zda na konci souboru není prázdný řádek

  3. echo text s novým řádkem v bash