sed nebo tr - odstranění ip adresy a konce řádku

beer

  • *****
  • 729
    • Zobrazit profil
sed nebo tr - odstranění ip adresy a konce řádku
« kdy: 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.


Danny

Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #1 kdy: 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

beer

  • *****
  • 729
    • Zobrazit profil
Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #2 kdy: 20. 09. 2017, 09:45:38 »
Díky, ale bohužel nefunguje, ty řádky to vůbec neodstranilo...

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #3 kdy: 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

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #4 kdy: 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


beer

  • *****
  • 729
    • Zobrazit profil
Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #5 kdy: 20. 09. 2017, 10:26:29 »
Díky, super, zdá se, že funguje.

nobody(ten pravej)

Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #6 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
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'

Alibaba

Re:sed nebo tr - odstranění ip adresy a konce řádku
« Odpověď #7 kdy: 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