Portál AbcLinuxu, 14. července 2025 20:56


Dotaz: Troska bashu

13.6.2015 01:40 qweqweqeqwe
Troska bashu
Přečteno: 527×
Odpovědět | Admin
Zdravim, mam v subore niekolko stoviek riadkov kde na kazdom riadku je adresa siete a prefix. Niektore riadky su ukoncene .0 a znacia prefix /24. Na takyto riadok, ktory neobsahuje "/" by som potreboval na koniec pridat prefix /24.

Vyriesil som zatial to, ze som si grepom vypisal riadky ktore neobsahuju "/" a to cez grep -v "/" file.txt

D.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.6.2015 02:57 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Troska bashu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus použít awk nebo sed.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
13.6.2015 08:54 Matlák
Rozbalit Rozbalit vše Re: Troska bashu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když pošleš příklad řádku s prefixem a bez něj, myslím že by tady leckdo dokázal napsat příslušný regex. Nic složitého to není.
13.6.2015 09:12 NN
Rozbalit Rozbalit vše Re: Troska bashu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Strelim:
sed s/\(\.0\)$/\1\/24/g
Najdi vsechny radky, ktere konci na '.0' a pridej za ne '/24'. Je to ono?
13.6.2015 15:53 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Troska bashu

Pokud bychom se striktně drželi zadání "přidat '/24' na konec řádků neobsahujících lomítko, pak např.

sed -re '\_^[^/]*$_ s_$_/24_'
awk '!/\// { printf "%s/24\n", $0; } /\// { print; }'

Pokud bychom chtěli učinit zadost i nadpisu, pak např.

while read; do
    case "$REPLY" in
        */*) echo "${REPLY}" ;;
        *)   echo "${REPLY}/24" ;;
    esac
done <file
13.6.2015 16:30 NN
Rozbalit Rozbalit vše Re: Troska bashu
Ten case je fakt pekny napad..
13.6.2015 18:10 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Troska bashu
Hodně líný nápad. Nechtěl bych to nikde použít.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Josef Kufner avatar 14.6.2015 11:49 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Troska bashu
Proč?
Hello world ! Segmentation fault (core dumped)
14.6.2015 12:13 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Troska bashu
Je to o jeden řád pomalejší než sed či awk.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
16.6.2015 10:19 Zadejte vaše jméno
Rozbalit Rozbalit vše Re: Troska bashu
Kite, ty už se na ten Linux v hodinkách fakt vyser :-D
16.6.2015 10:10 c64
Rozbalit Rozbalit vše Re: Troska bashu
filtruje řádky které neobsahují lomítko: sed '/*[^/]*/s/\.0$/.0\/24/'

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.