Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: beer 20. 09. 2017, 09:20:14
-
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...
-
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'
-
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