Strona 1 z 1

[+] awk sed czy co innego - wycinanie fragmentu tekstu

: 03 stycznia 2009, 19:56
autor: lis6502
Walczę z tym od kilku godzin.
Powiedzmy że mam taki tekst

Kod: Zaznacz cały

BeDA dobrzE BraLY 6A5B0C2D 
Potrzebuję wyciąć z niego liczbę heksadecymalną. Robiłem to grepem, ale ten wyświetlał mi całą linię. awk sprawdzi się jeśli wiem, na którym 'polu' znajduje się poszukiwana przeze mnie wartość. Ew. od biedy wystarczy mi parametr do awka, który zadziała tak, że

Kod: Zaznacz cały

{print $1}
wyświetli mi pierwsze pole od końca. Sed chyba do tego się nie nada, przy takiej składni

Kod: Zaznacz cały

lis6502@Nexus:~$ echo BeDA dobrzE BraLY 6A5B0C2D |sed 's/[^0-9A-F]//g'
BDAEB6A5B0C2D
Byłem na http://www.majerowski.pl, ale mojego problemu tam nie poruszono. Forum też przeglądałem.

: 05 stycznia 2009, 09:38
autor: snah

Kod: Zaznacz cały

echo BeDA dobrzE BraLY 6A5B0C2D | awk '{print NF; print $NF}'

: 05 stycznia 2009, 11:57
autor: lis6502
Dzięki Ci wybawco! Jeszcze powiedz tylko skąd bierzesz takie mądrości? Jest jakiś kurs gdzieś?

: 07 stycznia 2009, 11:14
autor: snah
Mam na studiach systemy operacyjne. Prowadzący nam dał kilka pdfów. Jak poszukasz to na pewno też coś znajdziesz, np. na szybko z wikipedii http://gnu.univ.gda.pl/~tomasz/prog/awk ... k-man.html .

: 07 stycznia 2009, 16:54
autor: RaV.
Wiem, że problem już rozwiązany, ale może na przyszłość się przyda, albo jako ciekawostka.
lis6502 pisze:wyświetli mi pierwsze pole od końca. Sed chyba do tego się nie nada, przy takiej składni
Kod:
lis6502@Nexus:~$ echo BeDA dobrzE BraLY 6A5B0C2D |sed 's/[^0-9A-F]//g'
BDAEB6A5B0C2D
Nada :)

Kod: Zaznacz cały

echo BeDA dobrzE BraLY 6A5B0C2D | sed -e 's/.* \([0-9A-F]*\)$/\1/'

: 07 stycznia 2009, 17:00
autor: lis6502
Również Ci dziękuję. Niestety już nie załapiesz się do podziękowań w moim niewielkim faq ;p