私の出力はVBoxManage list vms
次のとおりです
"arch" {de1a1db2-86c5-43e7-a8de-a0031835f7a7}
"arch2" {92d8513c-f13e-41b5-97e2-2a6b17d47b67}
名前を取得してarch
変数arch2
に保存する必要があります。
ベストアンサー1
grep + sedを使う
これにより、次の2つの文字列の内容が解析されます。
$ grep -o '".*"' somefile | sed 's/"//g'
arch
arch2
上記のコードはパターンに一致する文字列を探します".*"
。これは二重引用符内のすべての項目と一致します。したがって、grep
次の型の値が返されます。
"arch"
"arch2"
Pipe toは、sed
これらの文字列からすべての二重引用符を削除して、必要な文字列を提供します。この記号は、すべての二重引用符を検索して何もないものに置き換えることをsed 's/"//g'
示します。そのコマンドはそこで起こるものであり、検索の尾は与えられた文字列全体に対してグローバルにこれを行うように指示します。sed
s/"//g
s/find/replace/g
g
ただsedを使う
また、それを使用してsed
開く二重引用符を切り取り、それらの間にある内容を保持し、残りの引用符とその後のすべての内容を切り取ることもできます。
$ sed 's/^"\(.*\)".*/\1/' a
arch
arch2
他の方法
$ grep -o '".*"' somefile | tr -d '"'
arch
arch2
このコマンドはtr
文字を削除するために使用できます。この場合、二重引用符を削除します。
$ grep -oP '(?<=").*(?=")' somefile
arch
arch2
PCRE関数を使用すると、grep
二重引用符で始まるか、二重引用符で終わり、部分文字列のみを報告するすべての部分文字列を見つけることができます。