人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

bash環境で、下記文字列編集をする方法を提示してください(gawk,sedはインストール済みです)。
(1)AAA BBB(MOJIRETSU) CCC
という文字列から、「MOJIRETSU」だけ取り出す。「MOJIRETSU」は可変長の文字列。
(1)AAA BBB(999) CCC
という文字列から、「999」だけ取り出す。「999」は可変長の数値。
要は正規表現などを用いて、カッコ内の値を取り出しただけなのです。
イメージとしてはコマンドで
$ATAI=`echo "AAA BBB(999) CCC" | なにかの処理`
を行って、ATAIにカッコ内の文字列や数値を入れたいのです。
よろしくお願いします。
※そういうことをやりたいのであればこういう知識やページを知っておいたほうがよいよ、という参考ページも提示していただけると助かります。

●質問者: sls
●カテゴリ:コンピュータ インターネット
✍キーワード:AAA bash CCC echo GAWK
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● shintabo
●35ポイント

# sed

echo "AAA BBB(999) CCC" | sed 's/.*(\(.*\)).*/\1/'

用途は、ログの集計などでしょうか?

たぶん、Perlを使った方が後々よいと思います

# perl

echo "AAA BBB(999) CCC" | perl -e '<STDIN> =~ /\(([^\)]+)\)/;print $1'

# enjoy perl

http://modperlis.bounceme.net/

◎質問者からの返答

ありがとうござます!

perlもインストールされているのですが、あくまでシェルの中での処理の一部なので・・

私もperlとか使いたいのですが。。。

sedの/\1/というのは、正規表現の1番目(0からかぞえてだと2番目)という意味と解釈すればよいでしょうか。


2 ● shintabo
●35ポイント

> sedの/\1/というのは、正規表現の1番目(0からかぞえてだと2番目)という意味と解釈すればよいでしょうか。

グループ化された1番目という意味です。

sedでは、\(.*\) がグループ化です。

( ) で囲まれた1個目のグループなので、999となります。

古い記事ですが、

http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231161/

にいろいろ書いてありますので、見てください。

◎質問者からの返答

なるほど、ありがとうございます。とても勉強になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ