Печатать шаблон сопоставления вывода до совпадения с другим шаблоном

Если вам не нужно воздействовать на каждый каталог в целом, вы можете сделать один цикл чтобы перечислить все файлы. Активируйте расширенные шаблоны в стиле ksh , чтобы получить шаблоны или.

shopt -s extglob
for file in @(lebenslauf|titlePage)/*.tex; do
  echo "$file"
done

Примечание. Всегда используйте двойные кавычки при замене переменных .

0
20.04.2018, 13:40
1 ответ

Соответствие между линиями между шаблонами, включая любую границу, является стандартным селектором диапазона в sed:

sed -n -e '/pattern1/,/pattern2/p' example.txt

В зависимости от того, насколько производительность -критична для вас (насколько велики файлы ), я, вероятно, поленюсь и воспользуюсь вторым проходом, чтобы удалить маркеры pattern2:

cat example.txt \
| sed -n -e '/pattern1/,/pattern2/p' \
| sed    -e '/pattern2/d'

(Да, это бесполезное использование cat, потому что я предпочитаю удобочитаемость объединения нескольких конвейерных фильтров потере производительности,и я не уверен прямо сейчас, является ли < example.txt | sed... | sed...мандатом POSIX или просто расширением, которое присутствует в bash и zsh.)

1
28.04.2021, 23:48

Теги

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