GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu v prostředí Linux zpracovat každý řádek víceřádkového řetězce?

Stačí předat svůj řetězec své funkci:

function my_function
{
    while test $# -gt 0
    do
        echo "do something with $1"
        shift
    done
}
my_string="cat
dog
bird"
my_function $my_string

vám dává:

do something with cat
do something with dog
do something with bird

A pokud vám opravdu záleží na tom, aby ostatní mezery byly brány jako oddělovače argumentů, nejprve nastavte IFS :

IFS="
"
my_string="cat and kittens
dog
bird"
my_function $my_string

získat:

do something with cat and kittens
do something with dog
do something with bird

Nezapomeňte unset IFS poté.


Použijte toto (je to smyčka čtení každého řádku ze souboru file )

cat file | while read -r a; do echo $a; done

kde echo $a je to, co chcete dělat s aktuálním řádkem.

AKTUALIZACE:od komentátorů (díky!)

Pokud nemáte žádný soubor s více řádky, ale máte proměnnou s více řádky, použijte

echo "$variable" | while read -r a; do echo $a; done

AKTUALIZACE 2:"read -r " se doporučuje zakázat zpětné lomítko (\ ) interpretace znaků (zkontrolujte komentáře mtraceur; podporováno ve většině shellů). Je to zdokumentováno v POSIX 1003.1-2008 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/read.html

Ve výchozím nastavení, pokud není zadaná volba -r, <backslash> bude fungovat jako úniková postava. .. Je podporována následující možnost:-r - Nezacházejte s <backslash> charakter nějakým zvláštním způsobem. Považujte každý za součást vstupního řádku.


Linux
  1. Připojit a připojit řetězec ke každému prvku $* v Shell?

  2. Jak změnit Shell v Linuxu

  3. Jak používat funkce shellu příkazového řádku v Linuxu

  1. Jak převést hex na ASCII znaky v prostředí Linuxu?

  2. Jak převést výstup shellu Linuxu do HTML?

  3. Jak mohu v Linuxu zjistit, který proces poslal mému procesu signál

  1. Jak mohu provést rozdělení s proměnnými v prostředí Linuxu?

  2. jak omezit délku řetězce přítomného v řádku pomocí linuxu

  3. Jak vložit nový řádek do skriptu prostředí Linux?