Ahoj, mám soubor, kde se občas vyskytne řádek 0.0.0.0 nebo ::1. Rád bych tyto řádky odstranil, ale chtěl bych ponechat řádky, které obsahují cokoliv za 0.0.0.0.
Zatím všechny mé pokusy vedly zhruba k tomu, že se sice 0.0.0.0 odstranilo, ale všude, a odstranili se i konce řádků, takže ze souboru se stal jeden řádek.
grep -v '^0\.0\.0\.0$|^::1$' soubor > vystupni_soubor
vysvětlení: patterny jsou mezi "^" (začátek řádku) a "$" (konec řádku), takže se matchuje jen řádek, na kterém je daný řetězec samotný
neručím za to, že je to dobře oescapováno, nutno vyzkoušet
Díky, ale bohužel nefunguje, ty řádky to vůbec neodstranilo...
Citace od: beer kdy 20. 09. 2017, 09:45:38
Díky, ale bohužel nefunguje, ty řádky to vůbec neodstranilo...
grep -v '^0\.0\.0\.0$' soubor | grep -v '^::1$' > vystupni_soubor
U původního chybí escape pro znak |, takže původní bez řetězení grepů přes pipy to bude takto:
grep -v '^0\.0\.0\.0$\|^::1$' soubor > vystupni_soubor
Díky, super, zdá se, že funguje.
pres sed, odstranani radku co obsahuji jen 0.0.0.0 a/nebo ::1
znak ^ znamena pocatek radku, znak $ konec radku
sed '/^0.0.0.0$/d;/^::1$/d'
pokud by pred tim na radku jeste neco melo byt a i v tom pripade odstranovat, tak
znaky .* umistene pred vyrazem, znamenaji ze muze byt cokoliv pred vyrazem
sed '/.*0.0.0.0$/d;/.*::1$/d'
Citace od: nobody(ten pravej) kdy 20. 09. 2017, 15:41:05
pres sed, odstranani radku co obsahuji jen 0.0.0.0 a/nebo ::1
znak ^ znamena pocatek radku, znak $ konec radku
sed '/^0.0.0.0$/d;/^::1$/d'
pokud by pred tim na radku jeste neco melo byt a i v tom pripade odstranovat, tak
znaky .* umistene pred vyrazem, znamenaji ze muze byt cokoliv pred vyrazem
sed '/.*0.0.0.0$/d;/.*::1$/d'
Len by som doplnil "-i" a nazov suboru, aby sa mu zmeny zapisali
sed -i '/.*0.0.0.0$/d;/.*::1$/d' subor.txt