LINUX.ORG.RU
решено ФорумAdmin

Не могу понять поведение grep


0

1

Хочу отфильтровать вывод файла, отсеяв строки с комментариями.

В файле есть строка " ; fkdgjnsdfoikm" Несколько первых символов - пробелы и \t, не важно в каком порядке и в каком количестве. Пытаюсь:

$ fgrep -v '^[ \t]*;' ./file
   	  	   ; fkdgjnsdfoikm
$ cat ./file | grep -v '^[ \t]*;'
   	  	   ; fkdgjnsdfoikm

Хотя при таком раскладе:

$ echo '   	  	   ;  fkdgjnsdfoikm' | grep -v '^[ \t]*;'
отрабатывает правильно.

Почему при выводе данных из файла регулярка не срабатывает?

Потому что там у Вас используется другая команда fgrep, а не grep. fgrep это то же самое, что grep -Fg:

 $ echo '        ;  fkdgjnsdfoikm' | fgrep -v '^[ \t]*;'
        ;  fkdgjnsdfoikm
echo '        ;  fkdgjnsdfoikm' | grep -Fv '^[ \t]*;'
        ;  fkdgjnsdfoikm
anarquista ★★★★★ ()
$ echo '   	  	   ;  fkdgjnsdfoikm' | grep -v '^[ \t]*;' ./file

Ты определись: данные грепу на стандартный ввод подаешь или из ./file читаешь.

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

Потому что там у Вас используется другая команда fgrep, а не grep

Там два варианта, один с fgrep, другой с grep и ни один не работает

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

Ты определись: данные грепу на стандартный ввод подаешь или из ./file читаешь.

Да, тупанул, во третьей строке лишнее "./file" дописал )

abr_linux ()
Последнее исправление: abr_linux (всего исправлений: 1 )

Может в фапйле помимо пробелов и табуляций есть ещё какие-то неотображаемые символы?

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