Проблема со вторым примером в том, что он вообще не соответствует вашей строке. Он пытается сопоставить ^.\.xyz
, то есть:
. Но я подозреваю, что вы пытаетесь сопоставить
. Пока для начала вам нужно удалить ^
, а затем вам нужно выяснить, как именно определить
для вашей ситуации.
Но вам не нужны два вызова sed, потому что вы можете хранить шаблоны в sed. Если вы окружаете шаблон, который хотите сохранить с (экранированными скобками ), вы можете заменить их позже на\1
(или \2
для второго шаблона и так далее ).
Итак, вы хотите удалить file
, а затем окончательное имя файла в этом:
*xyzfile 0 1 somefilebeingpointedto.xyz
Таким образом, шаблон, который, как я думаю, вы ищете, это (с буквальным текстом «файл» в нем):
file
Мы можем сопоставить это с:
^\(.*\)file\(.*\) [^ ]*$
Обратите внимание, что две части, которые мы хотим сохранить, заключены в (экранированные )круглые скобки. Если бы мы не хотели оставлять их на потом, мы могли бы опустить скобки(.*file.* [^ ]*
)
Затем с подстановкой sed вы получите полную строку, которая выглядит как:
sed 's/^\(.*\)file\(.*\) [^ ]*$/\1\2/'
Можете ли вы использовать ширину -первого паука в качестве шаблона:https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer