Я очень новичок в написании сценариев оболочки. У меня был небольшой запрос на разбор файла.
Итак, вот что я пытаюсь сделать:
Я запускаю команду слияния svn и файл конфликта genaratea
мой конфликтный файл хранится в файле конфликта.txt
Что я хочу сделать, это прочитать этот файл построчно и проанализировать одну строку, чтобы сопоставить с некоторыми ключевыми словами.
Например, одна из строк в файлах выглядит так:
C Client/Game/src/test/test.php
Теперь я хочу разобрать эту строку и найти ключевое слово test
в случае, если я нахожу его, я хочу выполнить какое-то действие, например, прервать со статусом выхода 2, 3 и т. д.
например, я хочу перебрать текстовый файл с именем «ИМЯ ФАЙЛА», который выглядит следующим образом
30 '!' C Client/test.js
31 '!' C Client/test2.js
32 '!' C Client/test3.js
`
что я делаю, это вырезать файл с помощью цикла while и команды cat
cat $FILENAME | while read LINE
do
echo $LINE
done
здесь я просто печатаю строку, я хочу знать, как я могу найти keyworkd в строке, и если я найду это ключевое слово, как я могу сделать какое-то действие над ним, как выход со статусом 1
Можете ли вы предложить какой-нибудь способ сделать это ..
источник
Ответы:
Есть много способов сделать это, в зависимости от ваших потребностей.
Просто напечатайте все строки, содержащие ключевое слово
test
:То же самое, но для многих ключевых слов. Создайте файл, содержащий все ключевые слова, по одному в строке, и запустите
Обработать файл построчно, выйти, если строка найдена
Выход со статусом 1, если строка совпадает. К сожалению, если я правильно помню (не уверен на 100%), bash позволяет устанавливать только возвращаемые значения в функциях. Итак, для получения статуса выхода нужно использовать что-то еще. Perl например:
Хотя вы не можете установить выходное значение, вы все равно можете сделать что-то похожее с bash. Выходное значение последнего запуска команды всегда сохраняется как
$?
в bash это означает, что вы можете проверить значение$?
и действовать соответственно:источник
Самый простой способ - вообще не разбирать файл построчно.
источник
параметры grep:
например:
источник