単語の前後のテキストを削除する方法

単語の前後のテキストを削除する方法

次の行があります。

create table "sacro".issue

私が望む期待される結果は次のとおりです。

"sacro"

最初の二重引用符の前のすべての項目と最後の二重引用符の後のすべての項目を削除したいと思います。

答え1

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

これは文字列を--区切りリストcreate table "sacro".issueとして扱い、2番目のフィールドである引用符で囲まれた単語を削除します。"

見積もりが必要な場合:

$ echo 'create table "sacro".issue' | cut -d '"' -f 2 | sed -e 's/^/"/' -e 's/$/"/'
"sacro"

答え2

シェルは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"

関連情報