АВК--
awk -v RS='[\\=]+[\\=]' -v FS='\n' '/{"AAA"}/{ printf "%s%s%s%s",prevline,RT, $0, RT }{prevline="\n"$(NF-1)"\n"$NF}'./AppLog.txt
Записи, разделенные ======
Последние две строки сохраняются в предыдущей строке
Печатается предыдущее сохраненное значение, разделитель, текущее значение и снова разделитель.
Вы пропустили предикат -path
перед последним значением параметра"./.cache"
Путь, используемый с -path
, должен начинаться с пути поиска верхнего -уровня, используемого find
. Например
find. -path './something/here'
find /etc -path '/etc/init.d'
Возможно, вам придется использовать подстановочный знак *
, если вы хотите сопоставить имя каталога без указания его положения в дереве файловой системы. Этот пример будет соответствовать всем файлам(-type f
)где-то в каталоге wizard
find. -path '*/wizard/* -type f -print
Для будущих читателей:POSIX-совместимые решения, которые не обходят исключенные каталоги и вообще не включают их в вывод , имеют общие форматы:
Одиночное исключение
find searchpath \! \( -path searchpath/excludepath -prune \)
Множественные исключения
find searchpath \! \( \( -path searchpath/excludepath1 -o -path searchpath/excludepath2 -o -path 'searchpath/excludepathprefix-*' \) -prune \)
Предотвращение этого обхода может привести к значительному улучшению производительности, когда эти каталоги содержат много файлов. Полное исключение исключенных каталогов из вывода предотвращает непреднамеренные действия с ними.
Дополнительные фильтры и выходные параметры могут быть размещены после всех показанных, за исключением таких, как -maxdepth
, которые всегда размещаются сразу после searchpath
. Аргументы -path
должны соответствовать тому, что find
выведет для этого каталога, а подстановочные знаки должны быть экранированы/заключены в кавычки.
Для этого вопроса ответ будет таким (, так как -print
является значением по умолчанию):
find. \! \( \( -path./.cpan -o -path./.mozilla -o -path./.cache \) -prune \)