Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: beer 20. 09. 2017, 09:20:14

Název: sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: 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.
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: Danny 20. 09. 2017, 09:39:16
Kód: [Vybrat]
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
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: beer 20. 09. 2017, 09:45:38
Díky, ale bohužel nefunguje, ty řádky to vůbec neodstranilo...
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: ByCzech 20. 09. 2017, 09:54:42
Díky, ale bohužel nefunguje, ty řádky to vůbec neodstranilo...

Kód: [Vybrat]
grep -v '^0\.0\.0\.0$' soubor | grep -v '^::1$' > vystupni_soubor
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: ByCzech 20. 09. 2017, 09:56:50
U původního chybí escape pro znak |, takže původní bez řetězení grepů přes pipy to bude takto:

Kód: [Vybrat]
grep -v '^0\.0\.0\.0$\|^::1$' soubor > vystupni_soubor
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: beer 20. 09. 2017, 10:26:29
Díky, super, zdá se, že funguje.
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: nobody(ten pravej) 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
Kód: [Vybrat]
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
Kód: [Vybrat]
sed '/.*0.0.0.0$/d;/.*::1$/d'
Název: Re:sed nebo tr - odstranění ip adresy a konce řádku
Přispěvatel: Alibaba 21. 09. 2017, 07:57:28
pres sed, odstranani radku co obsahuji jen 0.0.0.0 a/nebo ::1
znak ^ znamena pocatek radku, znak $ konec radku
Kód: [Vybrat]
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
Kód: [Vybrat]
sed '/.*0.0.0.0$/d;/.*::1$/d'

Len by som doplnil "-i" a nazov suboru, aby sa mu zmeny zapisali

Kód: [Vybrat]
sed -i '/.*0.0.0.0$/d;/.*::1$/d' subor.txt