• ベストアンサー

UNIXのcshについて。

ちょっとここに質問していいものか迷いましたが、 このカテゴリで質問させていただきます。 UNIXのCシェルで、あるシェル変数に1行分のデータが 読み込まれていて、これをいくつかのデータがタブ 区切りで入っています。 これを違う複数の変数に各データを切り分けて入れた いのですが、どうしたらいいかわかりません。 awkやsedという手を考えたのですが、あれはファイルから 読み込むので、できませんでした。 わかる方がいらっしゃればよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.2

例えば変数wholevalueに set wholevalue = 'Monroe female actress' という具合に入っていたとします。 この時、 set eachvalue = `echo $wholevalue` とすると、(シングルクォートとバッククォートの違いに注意) eachvalueは変数の配列になります。 set name = $eachvalue[1] set sex = $eachvalue[2] set occupation = $eachvalue[3] とすると、$name, $sex, $occupation に、Monroe, female, actress が それぞれ入ります。

ro-su
質問者

お礼

なるほど、配列みたいな定義が、cshにはできるんですね・・・ やってみます、ありがとうございました。

その他の回答 (2)

回答No.3

foreach を使って配列に入れることもできます。 ご参考までにどうぞ #!/bin/csh set xxx="a b c" set yyy # xxx をひとつずつ取り出して、yyy に追加する foreach zzz ($xxx) set yyy=($yyy $zzz) end # 出力してみてチェック # 配列は 1 番目から入っています @ i = 1 while($i <= $#yyy) echo $j $yyy[$i] @ i = i + 1 end

ro-su
質問者

お礼

アドバイスありがとうございます。 自分が実際にやりたい処理とかはファイルが絡んでくるんで、ちょっと前記の例は難しいですが、こういうのもあるんですね。ありがごうございます。

  • syunpon
  • ベストアンサー率42% (9/21)
回答No.1

変数valueにデータがあるとして value2=`echo $value | awk '{print $1}'` とかで出来ると思いますよ echoは標準出力に出力しますのでパイプを使って標準入力からawkにデータを 渡し、加工した結果を別の変数へ代入。 他にも色々やり方があると思いますけど取りあえずこんな感じでどうでしょう?

関連するQ&A