テキストが変数によって生成されることがわかったら、Grapを使用して文字チェーンからテキストの前後の文字をどのように削除できますか?

テキストが変数によって生成されることがわかったら、Grapを使用して文字チェーンからテキストの前後の文字をどのように削除できますか?

私はそれを使用しています

grep 'name=>' log.txt | cut -d\   -f3 

私は次のような結果を得ます。

name=>"Faya-Largeau",
name=>"Paris",
name=>"Madrid",

name は変数の出力です。 (私はこのような都市の長いリストを持っています)

「Faya-Largeau」、「Paris」、または「Madrid」のみをインポートしたいので、名前=>と後の括弧の間にある都市を除外する必要があります。

どうすればいいですか?

事前にありがとう

ベストアンサー1

このユーティリティの主な目的grepは、特定の正規表現に一致する行を抽出することです。一部の非標準実装では、行から部分文字列を抽出することもできますが、これは通常、ファイルまたはテキストストリームで行のスクリプト編集を実行するために使用されるエディタgrep領域を侵害します。sed

基準を使用して、sed最初に部分文字列と二重引用符で囲まれた文字列を含まない行をすべて削除し、二重引用符で囲まれた文字name=>列をキャプチャします。次に、一致する行を二重引用符で囲まれた文字列に置き換えます。

sed -e '/.*name=>\("[^"]*"\).*/!d' -e 's//\1/' log.txt

(元のファイルから直接実行する必要があります。)

最初の式は、与えられた/.*name=>\("[^"]*"\).*/!d正規表現と一致しないすべての行を削除します。また、二重引用符で囲まれた文字列もキャプチャします\1

2番目の式は、s//\1/前の正規表現と一致する行のビットを、残りの行のキャプチャされた二重引用符文字列に置き換えます。

おすすめ記事