• 締切済み

シェルの文字列取得について

シェル(Bash)の文字列取得についてご教授ください。 文字列:  test(12345) 上記の文字列から"12345"(括弧内の数値部分)を取り出し、変数へ格納する場合、どのように行えばよいのでしょうか? ちなみに1桁だったり2けただったりと数値の桁は変動します。 よろしくお願いします。

みんなの回答

noname#111181
noname#111181
回答No.2

元の文字列をxに、取り出し後の文字列をyに格納するシェルスクリプトです。 ------------------hoge.sh x='test(12345)' y=`echo $x | sed -E 's/test\(([0-9]*)\)/\1/g'` echo $y

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

例えばこの文字列がファイル foo.txt にあるとして.... read foo < foo.txt foo=${foo##*(} foo=${foo%%)*} とすれば, 変数foo に "12345" が入ります.

関連するQ&A

  • 【AIX】Kornシェルの文字列操作

    AIXのKShellで、変数に格納された文字列の 一部を取り出したいのですが、どのようにプログラム を書けばよろしいのでしょうか・・・? 調べましたら、Bashなら expr 'substr 文字列 文字位置 文字列長' でいけますよね・・? 調べてはおりますが、Kshellならどのようにして文字列の一部を取り出すのかわからず困っております。 よろしくお願いいたします。

  • シェルスクリプト文字列の処理について

    はじめましてよろしくお願いします。 質問サイトもシェルも初心者なので至らない点がございましたら ご容赦の程よろしくお願いします。 下記シェルスクリプトを実行すると下記エラーが発生します。 「test2」変数に空白無しで「abc」と入力するとエラーは発生しません。 変数test2の値(a bc)を変更せずにエラーが発生しない方法はないでしょうか? 手段でもかまいませんので教えてください。 ========================= testsh110207.sh ====================================== #!/bin/sh test1="abc" test2="a bc" if [ ${test1} = ${test2} ] then echo "=:文字列1と文字列2が等しい場合に真" echo "test1の「${test1}」と、test2の「${test2}」は等しい" fi if [ ${test1} != ${test2} ] then echo "!=:数値1と数値2が等しくない場合に真" echo "test1の「${test1}」と、test2の「${test2}」は等しくない" fi echo "********* テスト完了 *********" ======================================================================= $ ./testsh110207.sh ./testsh110207.sh: line 6: [: too many arguments ./testsh110207.sh: line 13: [: too many arguments ********* テスト完了 *********

  • マクロである文字以降の文字列を取得するには?

    2枚のシートの一部ずつを条件に合わせ取り入れ新シートを作るマクロを作っています。 そこで1つ問題な列があります。 D列の各セルには「,」で区切られて2つのデータが入っています。 123 , 456 55 , 67 8 , 1 678 , 9      の様な形です。 「,」の両側にはスペースが入っています。 このうちの「,」の右側の数値を変数に入れたいんですが、文字数が行によって違います。 右側がスペースを含めて3文字に決まっているなら、   変数 = Right(Cells(i, 4), 3) の様な感じになりますが、一桁から三桁まであります。 こういう場合、「,」の右側を取得する関数とか有るんでしょうか? それとも他の方法を取るんでしょうか?

  • 文字列のなかの最後の文字

    宣言した変数にファイルのパスが格納されています。 例: FileName = "C:\My Documents\test\test.txt" この文字列から "test.txt"のみを取り出したいのですが、どうしたら良いのでしょうか? 文字列の一番最後の"\"の位置番号を取得して、次の文字からMIDを使えばいいのかなと思ったのですが、"\"の位置を取得する方法すらわかりません。 もし上記の方法で無理なら代替方法でも構いません。 ちなみにこのパスは毎回違うパスが入ってきます。 よろしくお願いします。

  • ExcelVBA セルの文字の取得

    Excel2010 VBAについてご教授願います。 あるセルに以下の様な内容が有ったとします。 (数字の部分は変動しますが、数字5桁+「-」+数字3桁+「-」数字3桁の  フォーマットとします。  改行も変動します。) セルの内容 12345-678-001 あああ。(改行) 12345-678-002 いいいいい12345-678-003ううう。(改行) 23456-789-010 えええ。23456-789-011 おおおおおおお(改行) 34567-890-123 かか 上記から以下の様なレイアウトで文字を取得したいと思います。 Split関数等を使用すればできるのかな、とも思いますが、 どの様に作成したらよろしいのか分かりません。 次のデータの ニューメリック5桁 - ニューメリック3桁 - ニューメリック3桁のレイアウトが 発生した時点でニューメリックのデータから前の文字までを取得するという 方法が取れればよろしいでしょうけれども、これが出来ないという事であれば 判定する方法とすれば、数字部分を変数等で与える事になろうかと思いますが、 この数字部分も変動します。 12345-678-001 あああ。 12345-678-002 いいいいい 12345-678-003ううう。 23456-789-010 えええ。 23456-789-011 おおおおおおお 34567-890-123 かか

  • シェル(ksh)で変数にある文字列を取り出す

    お世話になります。 シェルで変数(例えば:OUT)に入っている文字列ついて2つ質問させてください。 1:変数に入っている文字列を後ろから何文字(固定長)取り出したい場合にどのようすればよいか教えてください。 試してみたのは以下です。 OUT1=abcde #変数OUT1に文字列abcdeを代入 OUT=${OUT1:3:(-1)} (固定長3バイト後ろから取り出したい(cde)) をファイルに書きこんで起動すると、上記の処理にいったところで、"置換が正しくありません"とでてしまいます。 2:変数に入っている文字列の文字数を取り出したい。 試してみたのは以下です。 OUT1=abcdec #変数OUT1に文字列abcdeを代入 OUT=${#OUT} これは、コマンドラインでecho ${#OUT}とすると6と文字数を表示してくれますが、ファイルに書きこんで起動すると上記同様"置換が正しくありません"と表示されてしまいます。 OSは、SUN OS 5.8です。 わかるかたがいらっしゃたら教えてください。 宜しくお願いします。

  • 文字列から、4桁ないし6桁数値だけ抜き出す。

    テキスト文字列内にある、4桁~6桁 の連なる数値だけ抜き出したいです。 なにかいい関数とかないでしょうか。 例) 適当な文字列1234その他の文字列567890AZKNBU79ddAflP@K           ↑            ↑          ここと        この部分だけ抜き出し、 これらを適当な変数に代入。

    • ベストアンサー
    • Perl
  • bashシェル: 引用符で囲まない文字列

    bashシェルにおいて、パスを表す文字列を引用符で囲まないで変数に代入すると絶対パスに展開されて代入されます。 引用符で囲んで代入すると展開されませんので、「パスを変数に代入する時は引用符で囲まない」と覚えておけばよいように思いますが、「引用符で囲まない文字列はパスを表す」ということなのでしょうか。 (引用符で囲んだ場合) $ DIR="~/" $ echo $DIR ~/ (次のようにしてもディレクトリ下のファイル名を得られない) for FILE in ${DIR}* ; do echo ${FILE}; done (引用符で囲まない場合) $ DIR=~/ $ echo $DIR /home/taro/ 2014年9月23日

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • javascriptでtextareaの文字列を取得したいです。

    javascriptでtextareaの文字列を取得したいです。 textareaで入力された文字列から半角括弧でくくられた文字列を、半角括弧付きで取得したいです。 例 あいうえお かき(くけ)こ さしすせそ この場合、(くけ)が取得したい文字列です。 正規表現を使えば取得できそうなのですが、 詳しく分からないので教えてください。 よろしくお願いいたします。