Если я правильно понял вопрос,
речь идет о том, как сделать ту же команду (grep
),
с теми же параметрами и тем же вводом,
но несколько раз,
с разными аргументами регулярного выражения и разными выводами.
И я думаю, вы хотите избежать ненужного повторения/дублирования.
Кажется, вам нужен массив регулярных выражений (строки поиска):
declare -A regex
regex[1]="line1\|here1"
regex[2]="line2\|here2"
regex[3]="line3\|here3"
regex[4]="line4\|here4"
for i in "${!regex[@]}"
do
grep -h -r --color=always "${regex["$i"]}" file.txt >> "pattern$i.txt"
done
Первая строка (declare -A regex
) объявляет ассоциативный массив
называется regex
; это означает, что он создает массив в качестве заполнителя,
но не вносит в него никакой информации (элементов).
Следующие четыре строки заполняют массив четырьмя элементами,
которые являются регулярными выражениями,
пронумерованы числами 1
, 2
, 3
и 4
.
(Я использую эти индексы, потому что это то, что вы, кажется, хотите,
но вы можете использовать любые отдельные строки в качестве индексов:
например, уно
, дос
, трес
и куатро
,
или муравей
, летучая мышь
, кошка
и собака
. †)
Оператор for
, fori in"${!regex[@]}"
,
заставляет переменную i
перебирать
значения индекса 1
, 2
, 3
и 4
.
(Если бы я пропустил !
и сказал fori в "${regex[@]}"
,
он бы перебирал значения элементов,
строка1\|здесь1
, строка2\|здесь2
, строка3\|здесь3
и строка4\|здесь4
.)
Когда $i
равно 1
, ${regex["$i"]}
сокращается до ${regex[1]}
,
который расширяется до строка1\|здесь1
.
Итак, цикл повторяется (выполняется) четыре раза,
выполнив четыре команды grep
, которые вы хотите.
Если вы хотите запустить процессы grep
параллельно, просто выполните:
for i in "${!regex[@]}" do grep -h -r --color=always "${regex["$i"]}" file.txt >> "pattern$i.txt" & done wait
______________
† Если индексы
численно различные неотрицательные целые числа,
вы можете опустить оператор declare
.
Una causa de esto parece ser que la fuente de la interfaz de usuario requerida se encuentra en una partición diferente -que no le gusta al módulo de seguridad AppArmor
. Más información aquí .
Suponiendo que la fuente se encuentra dentro de un directorio en algún lugar como /mnt/path/to/my/fonts
, puede intentar agregar la línea:
/mnt/path/to/my/fonts/**
(nota doble asterisco )al final del archivo:
/etc/apparmor.d/abstractions/fonts
y luego reinicie su sistema.