Удалить строку из URL между AND после двух разных символов, используя sed - PullRequest
1 голос
/ 15 мая 2019

У меня есть текстовый файл, который содержит список URL, заключенный в двойные кавычки:

"http://test.com/secure/test/12345/doc.pdf"

Итак, я пытаюсь добавить URL к протоколу файла, а также удалить имя файла в конце URL. Ожидаемый результат будет:

"file://12345"

На Mac я пробовал

sed -i '.bak' 's~http://test.com/secure/test/~file://~g' url.txt

Команда выше добавила только переднюю часть,

"file://12345/doc.pdf"

Я не слишком уверен, как мне сопоставить первый "http://test.com/secure/test/, а затем как сопоставить следующую косую черту в URL /doc.pdf", чтобы удалить имена файлов (которые различаются).

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

Вы можете просто изменить следующую команду sed, чтобы изменить файл после подтверждения того, что он работает для вас:

echo '"http://test.com/secure/test/12345/doc.pdf"' | sed -E 's@"http://test.com/secure/test/([^/"]*)/.*"@"file://\1"@'
"file://12345"

Пояснения :

  • ([^/"]+) будет захватывать 12345 часть вашего URL (возможно, вам придется ограничиться более конкретным классом [0-9a-zA-Z] вместо [^/"]
  • /.*" будет соответствовать / иостальная часть URL
1 голос
/ 15 мая 2019

попробуйте это:

awk -F/ '{print "\"file://" $(NF-1)"\"" }' urlfile.txt

Объяснение

-F/                # fieldseperator is /
'{print "\"file://"  # print fix part
$(NF-1)"\"" }'         # print penultimate field
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...