grep -i "^--[ ]*dependency" "$dir/${script[${array_len}]}"|grep -v -i ":[ ]*none[ ]*$"
ответ
Это состоит из двух grep
выражений, так что давайте проверим один за другим:
grep -i "^--[ ]*dependency"
Это проверяет все строки, которые соответствуют шаблону "^--[ ]*dependency"
. В этом шаблоне указывается: начало строк (^
) с --
и последующее количество пробелов (0, 1 или много), а затем текст dependency
без учета регистра.
Смотреть это работает:
$ cat c
-- dependency
--dependency
-dependency
$ grep -i "^--[ ]*dependency" c
-- dependency
--dependency
grep -v -i ":[ ]*none[ ]*$"
Это проверяет все строки, которые не соответствуют шаблону ":[ ]*none[ ]*$"
.
Эта модель говорит: строки, содержащие :
, за которой следует любое количество вкладок (0, 1 или многих), то текст none
чувствительны к регистру и, наконец, любое количество вкладок (0, 1 или много), чтобы завершить линию.
Все вместе, это проверка строки, которые начинаются с --
+ пространствами + dependency
и не заканчивающееся с :
+ закладками + none
+ закладками.
Сноска. Флаги используются в grep
здесь:
-i
Игнорировать различия в образце и входных файлов.-v
Инвертировать смысл соответствия, чтобы выбрать не соответствующие линии.
Спасибо за ответ, сейчас довольно ясно :) – summithere
Было бы интересно узнать, что именно такие '[] *' и 'none []'. Вероятно, они содержат вкладку, а также пробел. – fedorqui
Да, 1-я квадратная скобка - это пробел, а последние 2 - вкладка. – summithere