Portál AbcLinuxu, 15. července 2025 15:52


Dotaz: vypis jen casti souboru

28.3.2005 23:11 nick
vypis jen casti souboru
Přečteno: 201×
Odpovědět | Admin
portreboval bych se souboru s textem vypsat jen jeho cast, ta cast co potrebuji vypsat je ohranicena.

pro lepsi pochopeni priklad obash souboru:
tady je nejaky text
tady je nejaky text
tady je nejaky text
tady je nejaky text
tady je nejaky text
START
tady je nejaky text
tady je nejaky text
STOP
tady je nejaky text
tady je nejaky text
a ja potrebuji vypsat jen ten text co je mezi START a STOP, a nevim jak na to

zousel jsem seda, ale nejak mi to neslo :(

jak jsem trapil seda:
sed -e '1,/START:/d /STOP/,$d' < soubor 
sed -e '/START/,/STOP/p' < soubor
a jeste mnoho jsem toho zkousel ale radsi uz to sam psat nebudu, jinak me ukamenujete :)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.3.2005 23:15 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Včetně značek:

sed -n '/^START$/,/^STOP$/p' soubor

bez značek:

sed '1,/START/d;/STOP/,$d' soubor
28.3.2005 23:16 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Jo, sorry, to druhé jsem upravil příliš málo:

sed '1,/^START$/d;/^STOP$/,$d' soubor
28.3.2005 23:26 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
moc dekuji

PS: az tak daleko jsem nebyl :)
Josef Kufner avatar 28.3.2005 23:25 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
jen tak od boku strelim...
$vypis = false;
while (<>) {
  if (/^START$/) {
    $vypis = true;
  } elif (/^STOP$/) {
    $vypis = false
  } elif ($vypis){
    print $_;
  }
}
v perlu moc nepisu, takze to asi bude chtit par korektur...
Hello world ! Segmentation fault (core dumped)
28.3.2005 23:30 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Chceš-li nutně použít perl, doporučuji

s2p '1,/^START$/d' '/^STOP$/,$d' soubor | perl - soubor
28.3.2005 23:52 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
mam souvisejici problem: kdyz udelam to co jsem mi poradil, a to
sed '1,/^START$/d;/^STOP$/,$d' soubor
tak to vse funguje jak ma,

ale kdyz tento cely prikaz dam jako promenu
BLEEE=`sed '1,/^START$/d;/^STOP$/,$d' soubor`
a pak to chci vypsat, tak to sice funguje, ale vsechno mi to vypise na jeden radek, a ne tak jak to bylo na tom puvodnim textu.... nevite proc?
Marek Bernát avatar 29.3.2005 00:10 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše Re: vypis jen casti souboru
man bash
              $(command)
       or
              `command`

       Bash performs the expansion by executing command and replacing the com-
       mand substitution with the standard output of  the  command,  with  any
       trailing newlines deleted.
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
29.3.2005 00:15 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Chtělo to zřejmě vložit o větu víc:

Embedded newlines are not deleted, but they may be removed during word splitting.
Marek Bernát avatar 29.3.2005 00:18 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Pravda, ale ja som chcel len poukazat na to, ze mal pouzit man. :-)
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
29.3.2005 00:15 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Tipoval bych spíš
man bash
/^QUOTING
;-)
echo "$promenna"
29.3.2005 12:06 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
nechci se vymlouvat na moji malou znalost anglictiny, ale to co jste mi sem dali, mi moc nepomohlo....

nechcete mi to nejak upresnit?

nejakej priklad by se hodil... snad bych to i pochopil :)
29.3.2005 12:17 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Chceš-li opravdu jednoduchou radu: Nedávej to do proměnné.
29.3.2005 12:31 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
co na to rict ? :) snad jen to ze by se v tom mem zdrojaku pak nevyznal ani tvurce (coz jsem ja) a to by bylo fakt spatne.

ja tu jeste jednou ukazu o co se snazim, ok? ok, vsichni souhlasite, tak jdu na to:

tady je obash souboru data:
blee
blee
START
ahoj
cuz
STOP
blee
blee
a ja potrebuju "vykuchat" to ahoj cuz a dat to pozdeji to pouzit v FOR cyklu,

timto "vykucham" to "ahoj" a "cuz"
sed '1,/^START$/d;/^STOP$/,$d' soubor

a pak potebuju tu promenou vypsat,
BLEEE=`sed '1,/^START$/d;/^STOP$/,$d' soubor`
echo $BLEEE
ale tohle mi to vypise:
vangroff@snehurka:~/do_something > ./exec
ahoj cuz
ale ja potrebuji aby to vypsalo takhle:
vangroff@snehurka:~/do_something > ./exec
ahoj
cuz
PS: mooc, prosim... poradte! lol
29.3.2005 12:37 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
sed '1,/^START$/d;/^STOP$/,$d' soubor

to rovnou vypíše. Proč to potřebuješ v proměnné?
29.3.2005 12:43 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
potrebuju to dale nekam vypsat (pracovat s tim)

neco jako:

SOUBOR=`sed '1,/^START$/d;/^STOP$/,$d' soubor`

for i in $SOUBOR;do
echo "neco tu je: $i"
done
chapete? mozna to neni az tak moc srozumitelne, ale ja to proste potrebuji dat do promene.... :)
29.3.2005 12:48 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Např.:
sed ... | while read do ... done
nebo
sed ... | xargs ...
Prostě do proměnné to nepotřebujete :-)
29.3.2005 12:56 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
nechci aby to vypadalo jako ze si nechci nechat poradit, ale co kdyz s tim potrebuju nekolikrat pracovat, a hodilo by se (uz kvuli uspore vykonu) a kvuli nejake ty "eleganci" to pouzit jako promenou a pracovat s tou promenou, nebo se to takhle nedela? ja nejsem moc velkej programator, jak asi vidite.. tak fakt nevim, to byl jen muj nazor :)
Marek Bernát avatar 29.3.2005 12:52 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Ale ved twofish ti to uz napisal
Namiesto $premenna, napises "$premenna", aby sa ti zachovali povodne znaky (o tom je QUOTING).
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
29.3.2005 13:00 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
wow... nojo funguje to, omlouvam se, nejak jsem to prehlidl :) huraaaa
29.3.2005 13:09 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Pokud ti to funguje, tak jsi to nejspíš nejpotřeboval dávat do proměnné...
29.3.2005 13:07 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
To sice ano, ale pak bude mít

for x in "$variable"; do ...;done

právě jednu iteraci, při níž bude v $x celá $variable, protože jsi zrušil word splitting.
29.3.2005 13:20 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
mozna ze jsem to zase az tak moc dobre neudelal, ale pouzil jsem to takto
DATA=`sed '1,/^START$/d;/^STOP$/,$d' test`

for X in `echo "$DATA"`; do
a je to tu: $X
done
a to funguje....

PS: nebo to je zase spatne? (treba neprogramatorsky) :), programatornejsem , tak to neprogramatorsky muze bejt :)
29.3.2005 13:25 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Už ti bylo odpovězeno, že tohle se dělá

sed '1,/^START$/d;/^STOP$/,$d' file | while read x; do something with $x; done
29.3.2005 13:41 nick
Rozbalit Rozbalit vše Re: vypis jen casti souboru
vy me uz asi zabijete :) ale stale mi to nejde....

nastala zmena, v souboru test je toto:
neco
START
ps aux
uname -a
STOP
neco
ja toho potrebuju vypsat, no spise spustit ten prikaz, a ten jeho vysledek nekam vypsat, nejlepe do souboru ...

co ted?

takhle jsem to zkousel ja:
sed '1,/^START$/d;/^STOP$/,$d' test | while read x; do "$x"; done
to nejde!

napise to toto:
vangroff@snehurka:~/do_something > ./exec
./exec: line 41: ps aux: command not found
./exec: line 41: uname -a: command not found
a to jako vybec nechapu ...
29.3.2005 13:47 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: vypis jen casti souboru
Přečti si man bash.

V tomhle případě bych nevynalézal kolo ale poslal to rovnou shellu:
sed '1,/^START$/d;/^STOP$/,$d' test | sh
29.3.2005 13:49 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: vypis jen casti souboru
No tak se vraťte na začátek a přečte si tu sekci v manuálové stránce ještě jednou. HINT: máte tam pro změnu závorky navíc.

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.