проблема с sed. Что я делаю не так?

#regex #sed

#регулярное выражение #sed

Вопрос:

Я пытаюсь заменить [‘xxx’] на [ xxx], используя sed:

 sed -e 's/a[ '(.*)' ]/a[ 1 ]/' ./Test
sed: -e expression #1, char xx: invalid reference 1 on `s' command's RHS
  

Что я делаю не так?

Спасибо!

Ответ №1:

Вам нужно избежать [ и ] вот так:

 echo "a[ 'xxx' ]" | sed "s/a[ '(.*)' ]/a[ 1 ]/"
  

Ответ №2:

Как насчет простого удаления символов, заключенных в одинарные кавычки? Чтобы избежать путаницы в командной строке, используйте двойные кавычки вокруг выражения:

  sed -e "s/'//g"
  

a[‘xxx’]

a[xxx]

Грег Джонсон

Ответ №3:

Как насчет использования tr для удаления одинарных кавычек?

 printf "a['xxx']n" | tr -d "'"
a[xxx]