Я пытаюсь написать короткий сценарий, в котором я использую sed для поиска в потоке, а затем выполняю подстановку в потоке на основе результатов функции оболочки, которая требует аргументы от sed, например,
#!/bin/sh
function test {
echo "running test"
echo $1
}
sed -n -e "s/.*\(00\).*/$(test)/p" < testfile.txt
, где testfile.txt содержит:
1234
2345
3006
4567
(с символами новой строки между ними; они удаляются при форматировании ваших сайтов).Итак, хорошо, что сценарий работает для меня (вывод «бегущий тест»), но, очевидно, не имеет аргументов, переданных для тестирования.Мне бы хотелось, чтобы строка sed была чем-то вроде:
sed -n -e "s/.*\(00\).*/$(test \1)/p" < testfile.txt
и выводом:
running test
00
, чтобы шаблон, соответствующий sed, подавался в качестве аргумента для проверки.Я не ожидал, что вышесказанное сработает, но я попробовал каждую комбинацию скобок, обратных кавычек и экранировок, которую только мог придумать, и нигде не могу найти упоминания об этой ситуации.Помощь