Portál AbcLinuxu, 10. května 2025 08:25

Dotaz: PERL oneliner v shell skriptu-predani parametrů

6.6.2008 16:42 Terka | skóre: 13
PERL oneliner v shell skriptu-predani parametrů
Přečteno: 517×
Odpovědět | Admin
spoustim skript s parametry:
./skript.sh 222 33 '44 44' 55

skript obsahuje:
cat soubor|perl -e ' while (<>){if (/'$4'/../'$5'/){print;}}'


protoze $4 obsahuje mezeru, skript mi nebezi korektne; za $4 se dosadi:
cat soubor|perl -e ' while (<>){if (/44' '44/../55/){print;}}'

jak mam upravit predchozi radek, aby mi tam doplnil:
cat soubor|perl -e ' while (<>){if (/44 44/../55/){print;}}'
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

David Watzke avatar 6.6.2008 16:45 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
Odpovědět | | Sbalit | Link | Blokovat | Admin
${4//\'}
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.6.2008 16:47 Terka | skóre: 13
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
diky, ale proc zrovna tohle ?
David Watzke avatar 6.6.2008 16:49 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
Funguje to? // znamená nahrazení všech výskytů a jelikož tam už není další /, nahradí se řetězec za tím (escapovaný ') za nic. Příklad:
echo ${PATH//:/ ... }
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.6.2008 16:51 Terka | skóre: 13
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
ne, nefunguje
David Watzke avatar 6.6.2008 16:54 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
To protože sem špatně pochopil dotaz, místo apostrofů použij uvozovky.
perl -e "while (<>){if (/$4/../$5/){print;}}" soubor
V uvozovkách probíhá substituce...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
6.6.2008 16:55 Terka | skóre: 13
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
diky!
6.6.2008 18:02 Anatheman | skóre: 9 | Ostrava
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
mozna bych jen doplnil, ze ta smycka while se da nahradit -n. Viz. perlrun(1)

perl -nle "(/$4/../$5/) && print;" soubor
6.6.2008 21:40 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
pokud mozno nezbavoval bych se tech apostrofu.
cat soubor|perl -e ' while (<>){if (/'"$4"'/../'"$5"'/){print;}}'
In Ada the typical infinite loop would normally be terminated by detonation.
6.6.2008 22:18 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedna možnost je ty parametry předat jako proměnné prostředí a v perlu k nim přistupovat přes %ENV:
param1="$4" param2="$5" perl -e '... $ENV{"param1}  $ENV{"param2"} '
7.6.2008 12:56 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
Odpovědět | | Sbalit | Link | Blokovat | Admin
cat soubor|perl -e ' while (<>){if (/$ARGV[1]/o .. /$ARGV[2]/o){print;}}' "$4" "$5"
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
7.6.2008 13:02 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: PERL oneliner v shell skriptu-predani parametrů
teda ještě lépe jak už tu někdo napsal
perl -ne '/$ARGV[1]/o .. /$ARGV[2]/o and print' "$4" "$5" < soubor
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.