У меня есть некоторая информация, хранящаяся во внешнем файле.
В основном скрипте я разбираю вторичный файл, чтобы выяснить, как следует обрабатывать информацию.
Для этого я пробовал это:
cat ./secondary.file
file:block.txt @"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
который, по сути, определяет, где брать данные и что делать, чтобы получить правильный результат. Идея состоит в том, что каждая строка будет иметь новый файл: ссылка на имя файла и способ получения согласованного вывода из каждого файла.
Итак, в основном файле я могу сделать это:
source=`cat ./secondary.file | grep -Ev "^#|^$" | tr -d "\r" | cut -d@ -f2`
что дает мне "метод":
"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
Теперь я пытаюсь добавить это в конвейер команд основного скрипта
... | grep -E $regex
что я надеялся перевести во что-то вроде:
... | grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
но он не жалуется на то, что grep не является командой и то же самое для awk. Я пытался хранить полные команды во вторичном файле, например
file:block.txt @grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
но и назовите его в основном файле следующим образом:
source=`cat ./secondary.file | grep -Ev "^#|^$" | tr -d "\r" | cut -d@ -f2`
echo $source
grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
... | $source | ...
но опять не повезло. Идеи заканчиваются ...