У меня есть файл журнала (application.log), который может содержать следующую строку обычных и специальных символов в нескольких строках:
*^%Q&$*&^@$&*!^@$*&^&^*&^&
Я хочу найти номера строк, которые содержат эту строку специальных символов.
grep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
Приведенная выше команда не возвращает никаких результатов.
Каким будет правильный синтаксис для получения номеров строк?
unix
search
grep
special-characters
Авинаш Сони
источник
источник
^@
: значит,^
за которым следует@
или нулевой символ?Ответы:
Скажите ,
grep
чтобы обработать ввод в фиксированной строке , используя-F
опцию.grep -F '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
-n
Требуется опция для получения номера строки,grep -Fn '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
источник
^
,$
,.
,*
и\
. или выfgrep
тоже можете попробовать .fgrep
такой же, какgrep -F
.egrep '*^%Q&$*&^@$&*!^@$*&^&^*&^&' application.log
?grep -rinF '-static'
печатаетInvalid option «t»
. В @ Мани ответ работал , то естьgrep -rin "\-static"
.У меня сработало следующее:
grep -e '->'
-E означает, что следующий аргумент является шаблоном и не будет интерпретироваться как аргумент.
От: http://www.linuxquestions.org/questions/programming-9/how-to-grep-for-string-769460/
источник
-
, см. Также stackoverflow.com/questions/2427913/…Связанное примечание
Чтобы использовать grep для возврата каретки, а именно
\r
символа, или0x0d
, мы можем сделать это:В качестве альтернативы используйте
printf
илиecho
для совместимости с POSIXИ мы можем использовать
hexdump
, илиless
чтобы увидеть результат:Относительно использования
$'\r'
и других поддерживаемых символов см. Руководство Bash> Цитирование ANSI-C :источник
grep -n "\*\^\%\Q\&\$\&\^\@\$\&\!\^\@\$\&\^\&\^\&\^\&" test.log 1:*^%Q&$&^@$&!^@$&^&^&^& 8:*^%Q&$&^@$&!^@$&^&^&^& 14:*^%Q&$&^@$&!^@$&^&^&^&
источник
Вы можете попробовать удалить любые буквенно-цифровые символы и пробел. И тогда использование
-n
даст вам номер строки. Попробуйте следующее:grep -vn "^[a-zA-Z0-9 ]*$" application.log
источник
Попробуйте vi с параметром -b, это покажет специальные символы конца строки (я обычно использую его, чтобы увидеть окончания строк Windows в txt файле в ОС unix)
Но если вам нужно решение со сценарием, очевидно, vi не будет работать, поэтому вы можете попробовать параметры -f или -e с помощью grep и передать результат в sed или awk. Со страницы руководства grep:
Выбор совпадения -E, --extended-regexp Интерпретировать ШАБЛОН как расширенное регулярное выражение (ERE, см. Ниже). (-E указывается в POSIX.)
источник