Я не полностью уверен в том, что вы надеялись получить с помощью шаблона ^*
, который, как мне кажется, равен нулю или более вхождений начального текстового якоря.
Вы можете использовать команду sed
в следующем тексте для достижения желаемых результатов:
pax$ echo "u'amy', u'1', u'bob', u'2'," | sed -e "s/u'\([^']*\)',/\1/g"
amy 1 bob 2
* [^']*
в скобках захвата будет в основном захватывать все после '
до следующего '
. Вы также заметите, что я переключился на использование двойной кавычки "
для окружения команды sed
. Это упрощает экранирование, которое вам нужно сделать внутри строки, если она использует одинарные кавычки.
Это также меняет то, что оболочка может сделать с вашей строкой, но в этом случае вы не используете ничего, что shell может интерпретировать.
Вы также можете избежать захвата, если решите удалить только то, что вам не нужно, вместо того, чтобы заменить то, что вам не нужно и вещи, которые вы хотите, с вещами, которые вы хотите (a) . Это будет go что-то вроде:
pax$ echo "u'amy', u'1', u'bob', u'2'," | sed -e "s/u'//g" -e "s/', */ /g"
amy 1 bob 2
(a) Возможно, мое самое мучительное использование "Lingua Anglais" , которые я наносил в течение нескольких десятилетий - вероятно, меня должны посадить в тюрьму за преступления против Энгли sh: -)