Как распараллелить рекурсивную функцию bash?

Проблема со вторым примером в том, что он вообще не соответствует вашей строке. Он пытается сопоставить ^.\.xyz, то есть:.xyz. Но я подозреваю, что вы пытаетесь сопоставить .xyz. Пока для начала вам нужно удалить ^, а затем вам нужно выяснить, как именно определить для вашей ситуации.

Но вам не нужны два вызова sed, потому что вы можете хранить шаблоны в sed. Если вы окружаете шаблон, который хотите сохранить с (экранированными скобками ), вы можете заменить их позже на\1(или \2для второго шаблона и так далее ).

Итак, вы хотите удалить file, а затем окончательное имя файла в этом:

*xyzfile 0 1 somefilebeingpointedto.xyz

Таким образом, шаблон, который, как я думаю, вы ищете, это (с буквальным текстом «файл» в нем):

file

Мы можем сопоставить это с:

^\(.*\)file\(.*\) [^ ]*$

Обратите внимание, что две части, которые мы хотим сохранить, заключены в (экранированные )круглые скобки. Если бы мы не хотели оставлять их на потом, мы могли бы опустить скобки(.*file.* [^ ]*)

Затем с подстановкой sed вы получите полную строку, которая выглядит как:

sed 's/^\(.*\)file\(.*\) [^ ]*$/\1\2/'

1
03.09.2021, 07:13
1 ответ

Можете ли вы использовать ширину -первого паука в качестве шаблона:https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer

1
06.09.2021, 11:03

Теги

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