我有下面一行:
create table "sacro".issue
我想要的预期结果如下:
"sacro"
我想删除第一个双引号之前的所有内容以及最后一个双引号之后的所有内容
答案1
$ echo 'create table "sacro".issue' | cut -d '"' -f 2
sacro
这会将字符串视为create table "sacro".issue
以"
- 分隔的列表,并删除第二个字段,即引号中的单词。
如果您想要报价:
$ echo 'create table "sacro".issue' | cut -d '"' -f 2 | sed -e 's/^/"/' -e 's/$/"/'
"sacro"
答案2
在 shell 中,使用 POSIX 前缀/后缀扩展:
$ s='create table "sacro".issue'
$ t="${s#*\"}" # remove up to first "
$ t="${t%\"*}" # remove after last "
$ echo "\"$t\"" # put the quotes back...
"sacro"
如果您正在从文件中查找数据,则更容易想到是否反过来,仅保留引用的部分。假设你grep
有-o
,那就是:
$ echo 'create table "sacro".issue' > file
$ grep -o '".*"' file
"sacro"