удалить спецсимвол с помощью sed

У меня есть текстовый файл, который содержит следующие

https://git.centos.org/git/rpms/abc.git
https://git.centos.org/git/rpms/abc.git/
https://git.centos.org/git/rpms/abc

Когда я запускаю следующую команду,

reponame=$(echo $url | awk -F/ '{print $NF}' | sed -e 's/.git\/$//' | sed -e 's/.git//')
echo $reponame

Я должен получить

abc

Он не работает для строк, заканчивающихся в .git/, но работает для двух других случаев.

0
задан 31 March 2016 в 14:10

2 ответа

Используя grep с PCRE (-P):

grep -Po '.*/\K[^.]+' file.txt

желаемая часть извлечена [^.]+, .*/ соответствия часть прежде abc и \K отбрасывания соответствие.

Пример:

$ cat file.txt 
https://git.centos.org/git/rpms/abc.git
https://git.centos.org/git/rpms/abc.git/
https://git.centos.org/git/rpms/abc

$ grep -Po '.*/\K[^.]+' file.txt
abc
abc
abc
<час>

Подобная логика с помощью sed, с помощью группировки шаблона:

$ sed -r 's#.*/([^.]+).*#\1#' file.txt 
abc
abc
abc
2
ответ дан 1 April 2016 в 00:10
  • 1
    Хороший! I' m довольный, что Ваша база данных безопасна! Вы пробовали mysqldump удаленно через SSH, как я описал? I' m любопытный знать, работает ли в Вашем критическом случае это. – Matt Mello 12 August 2017 в 12:57

Я знаю, что вопрос просит a sed решение, однако предполагая, что строка извлекает, всегда будет в 6-м поле как в примере, который это более легко сделано с помощью AWK:

awk -F/ 'match($6, /^[^.]+/, x) {print x[0]}' file
  • -F/: устанавливает разделитель поля ввода на /;
  • match($6, /^[^.]+/, x): если шестое поле соответствует ^[^.]+ один или несколько раз, хранит соответствия в массив x выполнение следующего блока;
  • {print x[0]}: печатает первый элемент x.
% cat file
https://git.centos.org/git/rpms/abc.git
https://git.centos.org/git/rpms/abc.git/
https://git.centos.org/git/rpms/abc
% awk -F/ 'match($6, /^[^.]+/, x) {print x[0]}' file
abc
abc
abc
1
ответ дан 1 April 2016 в 00:10
  • 1
    Какой-либо прогресс до сих пор? Я can' t заставляют его работать: ( – MuhsinFatih 17 August 2017 в 08:30

Другие вопросы по тегам:

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