• 締切済み

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

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

みんなの回答

回答No.1

expr substr 文字列 文字位置 文字列長 ( '' でくくりません) というのは bash の機能ではなく、expr コマンドの機能です。ですから、AIX の expr コマンドが substr をサポートしているなら、ksh でもそのまま実行できるはずです。man expr で expr コマンドについて調べてみてください。  expr で substr が使えない場合は、次のように出来るかも知れません。 expr 文字列 : '.\{n\}\(.\{m\}\)' #(n+1)文字目からm文字

関連するQ&A

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

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

  • bashスクリプトでの文字列から特定文字列の位置特定

    bashスクリプトで 文字列から特定の文字の位置を取得する場合 expr index 文字列 特定したい文字 のように書きますが、aaa_atestという文字列から "atest"という文字列の開始位置を取得する ことはできません 何か方法はないのでしょうか

  • 文字列と文字列をつなげるには

    下記のようにプログラムを作りました。 簡略しているのでわかりづらいと思いますが、 文字の配列と文字の配列を文字の配列に格納したいので、 下記のように$arrayに”.=”として文字列を加えて いますが、うまくいきません。 どのようにしたらいいのでしょうか? ご教授お願いいたします。 while($text[$i] != ""){ if($i==1){ $array[$j] = $feild[$j]; $array[$j] .= " "; $array[$j] .= substr($text[$i], $no, $pos); } }

    • ベストアンサー
    • PHP
  • @がすでに含まれちゃってる文字列の操作

    perlで文字列中に@を使いたいときは ¥などでエスケープすればよいと思いますが、 (パラメタで受け取った)すでに@が入っている文字列の @までの文字列を切り取るにはどうすればよいでしょう。 どうぞ教えてください。よろしくお願いいたします。 たとえば、 $str1="aaa@bbb"; $str2=substr($str1,0,3); とやってもエラーになってしまいます。

    • ベストアンサー
    • Perl
  • PHP 文字列 操作

    文字列で $d[]; の session_register(?); 格納のしかたがわかりません。 また、別ページで上記の変数をとりだすとき $d=$_session(?); としなければならないのですか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 変数内の文字列にある最後の「"」位置を調べたい。

    変数myStrに格納されている文字列に幾つか含まれる文字「"」のうち、最後の「"」が文字列の何文字目に有るか出したいです。 InStr(1,myStr,""") 普通にInstrを使うと最初の文字位置を返してきます。 また「"」は"""になってしまいます。

  • 文字列の操作

    こんにちは。 以下のような、文字列があるとします。 NUMBER1(ヌル\0)からNUMBER1000(ヌル\0)までの文字列があるとします。 NUMBERは付属で、ほしい文字列が1から1000までNUMBERの次にある場合、1から1000までを取得する方法として、 Buf[100] int x=0; while(Buf[x]!='\0') //ナル文字までの長さを取得 x++; memmove(&Buf[0],Buf[x-1],4); //NUMBER1の場合、長さは7。しかしほしい文字列は第6要素なのでx-1。 しかし・・・これを行うと、 NUMBER10:長さ8 NUMBER100:長さ9 ・ ・ となり、二桁以上の場合は、memmove(&Buf[0],Buf[x-2],4)と、 第2引数を手動で可変しなければなりません。 そこで、NUMBER\01\0 NUMBER\01000\0というように、 NUMBERの次にヌル文字(あってますでしょうか?)\0を挿入し、次の要素に1から1000まで文字列を挿入。そして文字列終端が分かるように再度\0を挿入します。 しかしこのような場合、ヌルを2つ挿入することで、上記に示したプログラムでは、手前の\0までしか長さを取得しないので、うまくいきません。 そこで、文字列の区切りを示すための方法として、なにかありますでしょうか? 文字列は最後に、\0を挿入することで判別すると書いてありますが、 NUMBERVISUALC++\0というような文字列を配列に格納してある場合、 NUMBERとVISUALC++をどのように分けて取得するのでしょうか? それとも、第6要素から取得した文字列があると言う事が分かっている場合、第6要素からを指定するプログラムを作るということになるのでしょうか? よろしくお願いします。

  • bashシェル: 引用符で囲まない文字列

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

  • 文字列の操作

    はじめまして。 C言語のポインタを使った操作のように JavaScriptでも文字列の一文字一文字を配列に格納していくことはできますか? よろしくお願いします。

  • Javascriptで文字列操作

    こんにちは。 strの右から2文字を取り出したいのですがうまくいきません。 どこが間違ってますでしょうか? strの文字列の長さはそのときによって違います。 function test(){ str="12345" alert(str = str.substr(-0,2)); }