Portál AbcLinuxu, 10. května 2025 01:43

Dotaz: sed prepsani radku ze souboru

4.6.2015 22:50 Tom
sed prepsani radku ze souboru
Přečteno: 342×
Odpovědět | Admin
Ahoj mam prosbu, potreboval bych pomoct upravit nasledujici

sed '2s/.*/data1/' soubor1

aby data1 byl zdrojovy soubor ze ktereho by se ukladala data na urcity radek v soubor1. Nejak se v tom sedu nemuzu zorientovat.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.6.2015 22:58 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na tohle je lepší ed.
4.6.2015 23:14 NN
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
No a jak to teda vypada v edu?
5.6.2015 14:42 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru

Třeba takhle..

root@stroj~# user='root'
root@stroj~# SHADOWLINE='root:$6$WX1oW8M3$RMqWhuvtgzB5sZcq9/QPBZE9JeNlkkWVA9gI5cy2YaOeayG6.9NvZADuM7868ZzFCn25.vPxLRVGhMUZbD6CF0:15645:0:99999:7:::'
root@stroj~# ed /etc/shadow 2>/dev/null <<-EOF
/$user:
d
i
\$SHADOWLINE
.
w
q
EOF

Jinak jde o skript, který nastaví uživateli root v souboru /etc/shadow nějaké heslo. Popis toho co udělá ed: Najdi řádek, který začíná jménem které je v proměnné $user, za kterým musí následovat dvojtečka. Pokud takový řádek najdeš, tak ho smaž, a místo něj vlož obsah proměnné $SHADOWLINE. Ukonči editaci, zapiš a zavři soubor.

Tuhle konstrukci není problém uplatnit v normálním shellovém skriptu. Mění se pochopitelně akorát příkazy pro ed. Fantazii se meze nekladou. Vyžaduje to však alespoň minimum snahy se něco dozvědět a vyzkoušet na příkladu. Proč myslíš asi, že je nalinkovaná stránka do wikibooks, kde jsem to už před lety popsal i s příklady jak pro blbce.

wamba avatar 5.6.2015 01:13 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
moc tomu nerozumím o co se snažíte, něco jako vypsat první řádek ze soubor1 pak soubor data1 a pak zbytek ze soubor1?
head -1 soubor1 && cat data1 && tail -n +2 soubor1
This would have been so hard to fix when you don't know that there is in fact an easy fix.
5.6.2015 05:41 Tom
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
o toto.. soubor data1 obsahuje retezec "xyz" a tendo retezec potrebuju dostat do soubor2 na urcity radek dejme tomu druhy ale treba taky az na 99.

a
b
c

po uprave tedy by mel soubor2 obsahovat:

a
xyz
c

snad to vysvetluju dobre, ale soubor data1 bude slouzit jako zdroj promene pro druhy soubor, ale potrebuju to skutecne prepisovat nejakym prikazem mimo, cilovy soubor si to sam nemuze natahovat
5.6.2015 07:23 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
sed -e '2 d ; 1 r data1'

Chování v případě, že soubor má víc než jeden řádek, jste nedefinoval, tohle prostě obecně nahradí druhý řádek obsahem souboru (řešení v příspěvku výše ale funguje úplně stejně - zkusil jste ho vůbec?).

5.6.2015 07:35 Tom
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Zkousel, ale jak rikam v sed se nevyznam, ten muj mi jen prepsal druhy radek souboru nazvem souboru. Omlouvam se ale celkove pisu nejaky kod 3-4x do roka jinak to vubec nepotrebuju takze vlastne pokazde co neco pisu se vse ucim znova od nuly protoze vse zapomenu, tak se snazim vystacit se zakladnimi prikazy.
Ale dekuju vecer vyzkousim.
5.6.2015 10:40 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Tento zápis se mi líbí a krásně funguje. Zaslouží si být označen za řešení.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
5.6.2015 07:19 Tom
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Ale diky, vnukl jsu mi myslenku, mohl bych ten cilovej soubor pouzit jako zdroj dalsich dat, head nacist radky do mista kam chci vlozit, pak vlozim a tail vytahne zbytek a ulozim do finalniho souboru... Jak rikal kdysi spoluzak ja jsem programatorske prase, kod ktery normalni clovek ma na dve obrazovky ja zvladnu na dve radky z toho jedna je #!/bin/bash :)
5.6.2015 07:29 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Ehm… nepopsal jste právě přesně to, co ten příklad dělá?
5.6.2015 07:41 Tom
Rozbalit Rozbalit vše Re: sed prepsani radku ze souboru
Je to mozne, pisu z mobilu tak jsem to moc nestudoval a ni bych si to netroufl tipovat co to presne dela.

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.