Portál AbcLinuxu, 10. května 2025 01:43
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:
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.
soubor1
pak soubor data1
a pak zbytek ze soubor1
?
head -1 soubor1 && cat data1 && tail -n +2 soubor1
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?).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.