Mam duży plik tekstowy, w którym jego część wygląda tak (wartości edytowane):
JULIANA XXXX006060 LI1033322 THC BRL 730.00
XXXX006296 AA1004737 THC BRL 1,740.00
SANTOS JULIANA XXXX006668 AA1004786 THC BRL 8,150.00
SANTOS JULIANA CABINDA XXXX006697 AA1004777 THC BRL 2,325.00
SANTOS JULIANA XXXX006699 AA1004790 THC BRL 2,325.00
JULIANA BATA XXXX006141 CCC012946 THC BRL 1,460.00
JULIANA BATA XXXX006153 CCC013054 THC BRL 870.00
JULIANA XXXX006269 CCC013105 THC BRL 870.00
JULIANA XXXX006295 CCC013083 THC BRL 870.00
JULIANA BATA XXXX006305 CCC013043 THC BRL 1,460.00
Chcę zawsze chwytać (za pomocą cut
lub awk
innego) ciąg, który zaczyna się od XXXX00
, ale nigdy nie ma tego samego numeru pola.
Jak mogę to zrobić w skrypcie powłoki?
shell-script
text-processing
Vitor Gatti
źródło
źródło
-E
opcji (choć nie szkodzi).Wygląda na to, że chcesz 5. pola z prawej strony, więc
źródło
Korzystanie
grep
z PCRE:Możesz uciec
-w
(słowo) w tym przypadku, pamiętaj, że znaki składowe słowa są uważane za[[:alnum:]_]
:źródło
Kilka innych sposobów
Z GNU
awk
W przypadku starszych wersji GNU
awk
,--re-interval
mogą być potrzebne, więcZ
tr
igrep
źródło
wygląda na to, że liczby pól są różne, ponieważ masz tam listę osób i mają one różną liczbę nazwisk. ale prawdopodobnie żaden z nich nie ma nazwy z 0, więc po prostu odetnij całkowicie pierwszy łańcuch rozdzielany spacjami z jednym w nim, zapisz go i wytnij wszystko, co następuje.
źródło