LINUX.ORG.RU

Регулярка не матчит

 


0

1

Есть строка типа: col1|col2|col3|col4|col5|col6|col7|col8|col9|col10|col11

и есть регулярка:

ggrep -e '|[A-Za-z0-9]*|[0-9]+|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9.]*|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9]*$' my_file.txt

Мне надо найти строки у которых столбец col3 не пустой. В столбцах могут быть цифры, буквы и кавычки. Патерн на поиск пустых строк вроде работает:

ggrep -e '|[A-Za-z0-9]*||[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9.]*|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9]*|[A-Za-z0-9]*$' my_file.txt

Подскажите плз что упускаю

$ cat file
col1|col2|col3|col4|col5|col6|col7|col8|col9|col10|col11
col1|col2||col4|col5|col6|col7|col8|col9|col10|col11

$ cat file | awk -F'|' '{ if (length($3) != 0) print $0 }' 
col1|col2|col3|col4|col5|col6|col7|col8|col9|col10|col11



btw, что такое ggrep?

slowpony ★★★ ()

надо найти строки у которых столбец col3 не пустой

awk -F '|' '$3'

Подскажите плз что упускаю

начальный '|'?

grep-ом:

grep -E '^([^|]*\|){2}[^|]'

anonymous ()
Ответ на: комментарий от anonymous

Ага:

$ echo 'col1|col2|col3|col4' | perl -F'|' -ale 'print $F[2]'
l

vs

$ echo 'col1|col2|col3|col4' | perl -F'\|' -ale 'print $F[2]'
col3

$ bash --version
GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

$ perl --version

This is perl 5, version 22, subversion 1 (v5.22.1) built for x86_64-linux-gnu-thread-multi
(with 58 registered patches, see perl -V for more detail)
...
anonymous ()
Ответ на: комментарий от anonymous

awk -F '|' '$3'

Как всегда — Анончику пятёрочку, остальным неуд.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.