Мне нужно, чтобы весь журнал был выполнен в моем проекте. Я использую эту команду, чтобы сделать это:строки grep, содержащие определенную строку (строка может быть написана на максимум 3 строки)
grep -rnw $1 -e "Logger.[view]*;$" >> log.txt
эта строка возвращает все строки, содержащие Logger [один из этих caracters] , содержащиеся в директории проекта «$1
» за исключением того, что есть некоторые строки, написанные на. 2 или 3 строки (формирование IDE). В этом случае я получаю только первую строку. Что я могу сделать, чтобы получить полный текст этого журнала, зная, что строка журнала всегда будет заканчиваться «);
» пример такой строки:
Logger.v(xxxxxxxxxxxxx
xxxxxxxxxxxxxxxx);
Вот мой сценарий:
#!/bin/bash
echo "Hello Logger!
# get project path
echo "project directory is $1"
# get all project logs and store them into temporary file tmp.txt for processing
grep -rnw $1 -e "Logger.[view]" >> tmp.txt
echo "tmp.txt created successfully"
# remove package name from previous result and store result into log.txt
sed -r 's/.{52}//' tmp.txt >> log.txt
echo "log.txt created successfully"
команда возврата Grep file_path/имя_файла: line_number: линия. Я нашел эту команду, которая возвращает только линию, даже если она написана в 2-х или 3-х линий, но без путь_к_файлуfile_name и line_number
sed -n '/Logger.[viewd]/{:start /;/!{N;b start};/Logger.[viewd]/p}' Main.java
Есть ли способ, чтобы эти два результата объединены. пример:
/home/xxx/xxx/xxx/Main.java:97:Logger.i(xxxxxxxxxxxxx);
/home/xxx/xxx/xxx/Main.java:106:Logger.d(yyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyy);
К сожалению, мой ответ не был полным, удалить его, пока я не получаю время, чтобы посмотреть на нее еще раз. –
Возможно, посмотрите http://unix.stackexchange.com/questions/112132/how-can-i-grep-patterns-across-multiplelines? –
Вам всегда нужны полные строки, т. Е. Если строка выглядит как 'xxxxxx Logger.v (yyyy', вам тоже нужен xxxxxx? Если нет, ваш вопрос сводится к« найти все строки, соответствующие regexp'/Logger \ . [view] \ (. +? \)/m'. Если ваши файлы не так сильно переопределены, что они не вписываются в память, может быть удобнее (также отлаживать и поддерживать) для использования крошечной программы (Ruby , Perl, Python, ....), slurp файл в строку и запустить regexp в строке. – user1934428