-PR-
解決済み

UNIXのcshについて。

  • すぐに回答を!
  • 質問No.135337
  • 閲覧数416
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 44% (11/25)

ちょっとここに質問していいものか迷いましたが、
このカテゴリで質問させていただきます。

UNIXのCシェルで、あるシェル変数に1行分のデータが
読み込まれていて、これをいくつかのデータがタブ
区切りで入っています。

これを違う複数の変数に各データを切り分けて入れた
いのですが、どうしたらいいかわかりません。
awkやsedという手を考えたのですが、あれはファイルから
読み込むので、できませんでした。

わかる方がいらっしゃればよろしくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 24% (357/1463)

例えば変数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

お礼率 44% (11/25)

なるほど、配列みたいな定義が、cshにはできるんですね・・・
やってみます、ありがとうございました。
投稿日時 - 2001-09-17 15:46:31

その他の回答 (全2件)

  • 回答No.1
レベル7

ベストアンサー率 42% (9/21)

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

ベストアンサー率 36% (37/102)

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

お礼率 44% (11/25)

アドバイスありがとうございます。
自分が実際にやりたい処理とかはファイルが絡んでくるんで、ちょっと前記の例は難しいですが、こういうのもあるんですね。ありがごうございます。
投稿日時 - 2001-09-17 15:48:20
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ