вставить строку между каждой парой двойных кавычек - PullRequest
0 голосов
/ 15 марта 2020

Я застрял в ситуации, у меня есть строка, как показано ниже:

-name "B_12*" -o -name "B_21*" -o -name "B_31" -o -name "B_41"

Мое требование - я хочу преобразовать вышеуказанную строку, как показано ниже:

-name "B_12*.tar" -o -name "B_21*.tar" -o -name "B_31.tar" -o -name "B_41.tar"

Я не эксперт с bash командами, но я немного понимаю, что проблему можно решить с помощью команды sed.

Ответы [ 2 ]

3 голосов
/ 15 марта 2020

Единственная сложность здесь заключается в том, что вам нужно сопоставить обе кавычки, чтобы они не были снова сопоставлены. С дистрибутивом sed, который имеет поддержку ERE с помощью опции -E, будет достаточно следующей команды:

sed -E 's/("[^"]*)"/\1.tar"/g' file
1 голос
/ 15 марта 2020

Этот шаблон будет соответствовать текстовой строке без одинарных кавычек, все, что вам нужно сделать, это получить все совпадения и выполнить альтернативный запрос для добавления .tar

\b[A-Z][^"]+

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...