質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

5回答

4710閲覧

シェルスクリプトで特定の文字列を抜き出したい

akirin5mgmg

総合スコア7

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2016/09/20 10:35

編集2016/09/20 11:03

シェルスクリプトについての質問です。
以下のような文から、「fugafuga」を抜き出したいです。

<Environment name="hogehoge" value="fugafuga" type="java.lang.String" override="true"/>
sed -e 's/[^"]*"\([^"]*\)".*/\1/'

これで「hogehoge」を抜き出すことは出来たのですが、「fugafuga」を抜き出したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

既に解決済ですが、シェルの変数展開での方法について回答しておきます。

bash

1text='<Environment name="hogehoge" value="fugafuga" type="java.lang.String" override="true"/>' 2text1=${text##*value=\"} 3text2=${text1%%\"*} 4echo $text2

投稿2016/09/21 01:40

編集2016/09/21 01:42
moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

抽出条件がハッキリしませんが、次の例は参考になりませんか?
sed ではなく、 egerp -o でのマッチ部分の取り出し機能を使ってみています。

a.txt

<Environment name="hogehoge" value="fugafuga" type="java.lang.String" override="true"/>
$ cat a.txt | egrep "\w+?=\".+?\"" -o name="hogehoge" value="fugafuga" type="java.lang.String" override="true" $ cat a.txt | egrep "\".+?\"" -o | tr -d '"' hogehoge fugafuga java.lang.String true

参考情報

投稿2016/09/20 22:32

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

valueのあとを抜き出したいと言うことなら、

Bash

1sed 's/.*value="\([^"]*\)".*/\1/'

投稿2016/09/20 12:31

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akirin5mgmg

2016/09/21 01:29

ありがとうございます!!この方法で解決することが出来ました!一番シンプルな解答を下さったotnさんにベストアンサーを付けさせていただきました。
guest

0

ちと強引ですが…

Sh

1echo '<Environment name="hogehoge" value="fugafuga" type="java.lang.String" override="true"/>' | \ 2 3tr ' ' "\n" | \ 4grep 'value' | \ 5sed -e 's/[^"]*"\([^"]*\)".*/\1/'

投稿2016/09/20 12:22

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正規表現には自信が無いのですが、自分でやる場合は一度 awk を使って関係無い項目を無くします。
常に3番目に value が存在する前提ですが、

bash

1$ echo '<Environment name="hogehoge" value="fugafuga" type="java.lang.String" override="true"/>' | awk -e '{print $3}' | sed -e 's/[^"]*"\([^"]*\)".*/\1/' 2fugafuga

みたいな感じで抜き出せると思います。

投稿2016/09/20 11:54

yoru

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問