The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"вопрос про grep...."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"вопрос про grep...."
Сообщение от kkv79 Искать по авторуВ закладки(ok) on 14-Сен-04, 07:42  (MSK)

как спомощью grep отфильтровать строки содержащие # в самом начале строки и пустые строки одновременно?

т.е. чтоб осталось только
bla-bla #comment
bla-bla

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "вопрос про grep...."
Сообщение от vitaly80 emailИскать по авторуВ закладки on 14-Сен-04, 08:59  (MSK)
>как спомощью grep отфильтровать строки содержащие # в самом начале строки и
>пустые строки одновременно?
>т.е. чтоб осталось только
>bla-bla #comment
>bla-bla

самое простое, что пришло на ум
cat primer.txt|grep -v "^#"|grep -xv ""
первый грэп удаляет (-v) строки, начинающиеся с #,
второй - удаляет пустые строки
Комментарии...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "вопрос про grep...."
Сообщение от newser Искать по авторуВ закладки on 14-Сен-04, 09:18  (MSK)
>>как спомощью grep отфильтровать строки содержащие # в самом начале строки и
>>пустые строки одновременно?
>>т.е. чтоб осталось только
>>bla-bla #comment
>>bla-bla
>
>самое простое, что пришло на ум
>cat primer.txt|grep -v "^#"|grep -xv ""
>первый грэп удаляет (-v) строки, начинающиеся с #,
>второй - удаляет пустые строки
>Комментарии...

Все верно, но пустые строки удаляются так:
grep -v '^$'

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "вопрос про grep...."
Сообщение от vitaly80 emailИскать по авторуВ закладки on 14-Сен-04, 10:01  (MSK)
>Все верно, но пустые строки удаляются так:
>grep -v '^$'
то есть окончательный вариант будет
cat primer.txt|grep -v "^#\|^$"
или
cat primer.txt|grep -v "^\(#\|$\)"


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "вопрос про grep...."
Сообщение от Дмитрий Ю. Карпов emailИскать по авторуВ закладки on 14-Сен-04, 10:53  (MSK)
Это - хороший пример для изучения регулярных выражений.

Вероятно, надо убирать ещё и строчки, где между началом и диезом находятся пробелы. Итак:

grep -Ev '^([[:space:]]*#.*)*$' ...

где:
-E - использовать расширенную версию регулярных выражений;
[[:space:]] - любой пробельный символ;
[[:space:]]* - пробельные символы в любом количестве от нуля и выше;
#.* - знак комментария и любые символы после него;
(...)* - то, что внутри скобок, может присутствовать в количестве ноль или более раз (звёздочку можно заменить на вопр.знак или на {0,}).


Впрочем, есть а др.вариант:

grep -E '^[[:space:]]*[^[:space:]#]' ...
где:
^[[:space:]]* - любое количество пробелов в начале строкИ;
[^[:space:]#] - и после них хоть что-то, кроме пробела и комментария.


PS: Все мои рекомендации надо тщательно проверить, т.к. сейчас у меня под рукой нет Shell.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру