Portál AbcLinuxu, 9. května 2025 06:17
Řešení dotazu:
awk '/ignore/ { print $2 }'
grep -v '^ignore .*' sed 's/^*/d/' > soubor ^--příkaz ^---další příkaz ...ale příkazy se v shellu musí oddělovat nečím víc než mezerou, např. rourou |
grep -v '^ignore .*' sed 's/^*/d/' > soubor ^--- chcete vybrat pouze řádky, kde je ignore? Ale -v znamená "vyjma..." čili to vybere řádky, kde *není* na začátku ignore.
grep '^ignore .*' soubor | sed 's/^*/d/' > soubor ^ ^ ^ ^--- d (ale v jiném kontextu) maže celý řádek, ne jen slovo, nedejte tam nic a slovo bude nahrazeno mezerou (=vymazáno) | | `-- zde má být regulární výraz (regexp), ne wildcard!!! | `-- to je ta roura `--- grep potřebuje jako parametr soubor, který má zpracovávatTakže jste asi chtěla napsat něco takového:
grep '^ignore' soubor | sed -e 's/^[^\s]\+\s\+//'Což lze rovnou v sedu udělat takto:
sed -n -e "s/^ignore\s\+\(.*\)$/\1/p" soubor
sed -e "/^ignore/d" soubor.txt > soubor_bez_ignore.txtexistuje i parametr -i kterým přepíšete původní
soubor.txt
.
Pokud byste to chtěla pomocí grep tak:
grep -v "^ignore" soubor.txt > soubor_bez_ignore.txta dál pak pracovat s novým souborem. co za tím ignore vše značí?
sed -n -e "s/^ignore\s\+\(.*\)$/\1/p" souborJe to především regulární výraz, regular expression, regexp.
\s = bílý znak, zpravidla mezera, tabulátor apod. \+ = opakující se alespoň jednou \(.*\) = jakýkoliv řetězec, v závorkách je to proto, abych ten text mohl následně použít zápisem \1 $ = konec řádku \1 = zde bude vložen text z první (výše uvedené) závorky, a protože tam toho víc není, celý výraz vlevo bude nahrazen jen "obsahem" té závorky, což by měl být ten název souboru.Před znaky
+ ( )
jsou obrácená lomítka, protože je nutné je v uvedeném kontextu escapovat, jinak by byly považovány prostě za znak plus, závorka apod. a neměly by zvláštní význam. Sed umí i perlovskou notaci regulárních výrazů, kde je escapování méně.
grep "^ignore " | cut -f 2- -d " "
cut
mám také rád, bohužel je při své jednoduchosti často nanic, protože člověka tak trochu tlačí do nerealistických předpokladů, jako že mezi ignore a názvem souoru je zrovna mezera, a navíc jen jedna apod.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.