Como remover texto antes e depois de uma palavra

0

Eu tenho a linha abaixo:

create table "sacro".issue

O resultado desejado que eu quero está abaixo:

"sacro"

Desejo remover tudo antes da primeira aspa dupla e tudo após a última aspa dupla

    
por Christopher Karsten 15.05.2017 / 11:38

2 respostas

2
$ echo 'create table "sacro".issue' | cut -d '"' -f 2
sacro

Isso trata a string create table "sacro".issue como uma lista " -delimited e corta o segundo campo, que é a palavra entre aspas.

Se você quiser as citações:

$ echo 'create table "sacro".issue' | cut -d '"' -f 2 | sed -e 's/^/"/' -e 's/$/"/'
"sacro"
    
por 15.05.2017 / 12:03
0

No shell, usando as expansões POSIX Prefix / suffix-eating:

$ s='create table "sacro".issue'
$ t="${s#*\"}"                       # remove up to first "
$ t="${t%\"*}"                       # remove after last "
$ echo "\"$t\""                      # put the quotes back...
"sacro"

Se você está procurando os dados de um arquivo, é mais fácil pensar se for o contrário, apenas manter a parte citada. Supondo que seu grep tenha -o , ou seja:

$ echo 'create table "sacro".issue' > file
$ grep -o '".*"' file
"sacro"
    
por 15.05.2017 / 11:47