LINUX.ORG.RU

поиск строки в файле linux

 ,


0

2

Как найти строку по такому шаблону:

(7-ми значное число)(набор символов)(тоже самое 7ми значное число)
пример:
1234567dfgfdg1234567
7676465=====7676465

ну и в самой строке могут быть еще и другие символы, главное чтоб была такая подстрока



Последнее исправление: zagruzkaaa (всего исправлений: 1)
grep "^[0-9]\{7\}.*\(1\)" filename

По идее еще $ в конец нужно добавить, но у меня с ним не работает если поставить его без .* - так делать не следует, но разбираться не охота. Буду рад если кто пояснит.

alozovskoy ★★★★★
()
Последнее исправление: alozovskoy (всего исправлений: 1)
Ответ на: комментарий от xaizek

Да, я сейчас поразмыслил и уже хотел писать опровержение - мой «код» не корректен. Спасибо!!

alozovskoy ★★★★★
()
Ответ на: комментарий от zagruzkaaa

Если использовать grep, то, наверное, нет. Может если попробовать что-то другое (awk, например), то будет быстрее, но не факт что ручные манипуляции окажутся быстрее регулярного выражения.

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

Спасибо за ответы, еще вопрос: после того как я нахожу строки я передаю их по конвейеру в следующую команду, но пока grep не завершится строка не переходит дальше. Как-то можно это обойти или нет?

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

Оно не обязательно до завершения команды, может и до завершения места в буфере. При перенаправлении тип буферизации уже не построчный, а поблочный. stdbuf, вроде, помогает (хотя какая-то другая команда ещё была):

... | stdbuf -o L grep ... |

xaizek ★★★★★
()
Ответ на: комментарий от zagruzkaaa

Вариант на awk, вдруг и правда быстрее будет:

awk 'length() >= 14 &&substr($0, 0, 7) == substr($0, length() - 6)'

xaizek ★★★★★
()
Ответ на: комментарий от zagruzkaaa

пока grep не завершится строка не переходит дальше. Как-то можно это обойти или нет?

Попробуй grep --line-buffered

no-such-file ★★★★★
()

млжядь,

и чем только люди не занимаются, только чтоб не редактировать /rc.local, млжядь!

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