Каково значение строки **/* при использовании с grep?

Я не уверен, насколько структурированный Ваши данные всего лишь, если это - как Вы показываете, как насчет следующего:

grep -B2 'Auto-Installed: [^1]'

Это предполагает, что каждая строка файла конфигурации включает Auto-Installed строка, которая не могла бы быть корректной.

Вот awk программа, которая я думаю, делает точно, как Вы попросили.

awk 'BEGIN{deleted=3}
     !deleted{printf "%s",l[NR%3]}
     deleted {--deleted}
     {l[NR%3]=/./?$0"\n":$0}
     /Auto-Installed: 1/{deleted=3}
     END{for(i=NR+deleted;i<NR+3;++i)printf "%s",l[i%3]}'
3
26.02.2015, 00:50
1 ответ

Чтобы завершить комментарии к ответу,

  • grep -n будет искать заданное выражение в заданных файлах или стандартном вводе, сообщая номер строки, в которой были найдены совпадения.
  • \"in$Ps\" - это выражение, которое ищет grep. Поскольку двойные кавычки заключены в кавычки, они являются частью текста, который будет искать grep. Часть $Ps мне немного непонятна, поскольку оболочка попытается интерпретировать Ps как имя переменной.

    Если $Ps не задан, то grep будет искать текст: "in".

    Если $Ps установлен, то оболочка заменит эту часть выражения значением $Ps; например, если Ps=42, то выражение grep будет таким: "in42".

    Если $Ps - это значение, содержащее пробелы, то оно будет разбито на слова (поскольку расширение не заключено в кавычки), и это нарушит команду. Результирующая строка также подвергнется группировке по имени файла, если в $Ps присутствуют символы подстановки (например, *).

    Мое лучшее предположение - это ссылка на использование PowerShell в VBScript.

  • Как сказал Stéphane, ** - это расширенный синтаксис globbing, который здесь используется дважды, чтобы вытащить все файлы, заканчивающиеся на .asp и .js из текущего каталога, а также из подкаталогов (рекурсивно) как те, по которым grep будет искать. Он используется оболочкой, а не grep.

Короче говоря, код отобразит имена файлов и соответствующие номера строк для строк, которые соответствуют \"in\", где за in следует любое значение $Ps.

2
27.01.2020, 21:27

Теги

Похожие вопросы