プロが教える店舗&オフィスのセキュリティ対策術

echo ${array[0]}
This is a pen.
echo ${array[1]}
There is a cat.
echo ${array[2]}
Who are you?
echo ${array[3]}
Can I help you?  ・
  ・
  ・
などと、要素数は任意で
各要素に任意の文章が入っている
配列があるとき、
特定の文字列の間の要素のみを取り出して
別の配列に入れるという処理をbashで行いたいです。

具体的に、上記の例ですと
要素1と要素2だけを抽出し
新たな配列 newarrayに入れ

echo ${newarray[0]}
There is a cat.
echo ${newarray[1]}
Who are you?

としたいです。

どのように処理したらよろしいでしょうか?
よろしければ、知恵をお貸し願えたらと思います。

A 回答 (2件)

そのまま答えても勉強にならないでしょうし


(全部書くのが面倒だと言ううわさも)
ヒントだけ書きます。

考えてわからない場合には、具体的にどこがわからないかを
書いて質問してみてください。

#!/bin/sh

array[0]=abc
array[1]=def
array[2]=ghi
array[3]=jkl
array[4]=mno
array[5]=pqr
array[6]=stu

i=0

for num in ${array[@]};do

/bin/echo ${num}
/bin/echo $i

i=$((i + 1))

done

この回答への補足

なんとか完成しました。
助言ありがとうございます。

補足日時:2007/10/16 16:53
    • good
    • 0

具体的に・・・の後の


There is a cat
Who are you?

の抽出条件が不明です。
抽出条件をif文で書けばいけそうですが

この回答への補足

失礼しました。

抽出条件は、特定の文字列です。
今回の例なら、
There is a cat と Who are you?
なんですが、その間に任意の数の要素がある場合に
その間の要素もすべて抽出したいです。

具体的には
echo ${array[0]}
This is a pen.
echo ${array[1]}
XXX
echo ${array[2]}
"任意の文字列"
echo ${array[3]}
ZZZ
  ・
  ・
  ・
のとき、XXXとZZZを目印として
その間の文字列を抽出するという処理です。
XXX、ZZZが何番目の要素かは任意で、
かつ、XXX、ZZZの間の要素数も任意です。

補足日時:2007/10/12 13:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!