• ベストアンサー

アスタリスクを文字列として変数に入れるには

HP-UX cshで、アスタリスクを文字列として 変数に入れるにはどうしたら良いでしょうか? 現在は <file3の中身> grep -v file*.txt | grep -v file2.txt で、 set hensu=`cat file3.txt`としてecho $hensuすると grep -v file1.txt file2.txt file3.txt | grep -v file2.txt という具合に、アスタリスクがワイルドカードとして 働きます。これを「file*.txt」という文字列として 変数に入れる方法を教えてください。 宜しくお願いします。

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

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

sh なら単に hensu=`cat file3.txt` でいいような気もする. file3.txt の方にはエスケープもなにもつけないていいと思うよ.

charlie_rt
質問者

お礼

ご回答頂いた方法含め、色々試しましたが アスターは、ダメみたいですね。。 諦めました・・ありがとうございました。

その他の回答 (1)

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

これ, 実は `...` を展開したときについでにアスタリスクも展開しているはずです. だから, set hensu="`cat file3.txt`" でうまくいかないようなら, あきらめた方がきっと早い. つまり「csh を捨てる」のが正解なのかもしれない.

charlie_rt
質問者

お礼

ありがとうございます。 set hensu="`cat file3.txt`"も ワイルドカードとして働いてしまいました (""なしと同じ動き) shに変えて、file3の中にあるgrep -v file*.txtの アスタリスク部分を色々な引用符をつけてみたのですが 引用符ごとechoされてしまいます。 (grep -v file\*.txt、とか)

関連するQ&A

  • grepで変数が使えない

    HP-UX cshで、grep -v file01 | grep -v file02と 直打ちすると「file01とfile02以外のファイル一覧」 が取得できるのですが 本文にgrep -v file01 | grep -v file02と書いた file03を作成し set 変数 = `cat file3`として、ll | $変数 としても同じ結果が得られません。 どこを修正したら良いのでしょうか?よろしくおねがいします。

  • 変数文字の中に変数を入れたい

    初心者です。宜しく御願いします。 java sprictで文字列の中に変数名を入れたいのですが、 可能でしょうか? 例えば、PHPとかですと、変数の前に「$」があるので、 $hensu1="5"; ${hensu.$hensu}="dekirukana";←このような表現がしたいのです。 echo $hensu5; のような(上のプログラムが動くかどうかは別として)表現が可能かどうかが知りたいのです。 for文などで、一度に多くの変数に値を入れたいのですが、 どうあがいてもできません。わかりません。 どなたか救いの手をお願いします。

  • 変数内の文字列を空にできない

    ファイルに文字列を改行などを加えながら格納し、条件にそってファイルから取り出し表示します。 その後ファイルの中身、取り出しと表示に使った変数を空にしたいと思って作ったwindowsプログラムの一部で下記のようにしているのですが 一回目のoutを表示すると正しく表示されるのですが それ以降,前の文字列が半端に混じって表示されます。 word.txtの中身は空になってるのを確認したのですが woかoutの中身が綺麗にクリアされていないみたいです。何故でしょうか? 解決策を教えて下さい、お願いします。 FILE *words; int a; char lo[256], wo[256], out[256]; //文字列をファイルに出力 words = fopen("word.txt" , "a") fprintf(words , lo); if(a>0) fprintf(words, "\n"); else fprintf(words , " "); fclose(words); //ファイルから指定サイズの要素を入力 words=fopen("word.txt", "r"); fread( wo, sizeof( char ), 256, words ); wsprintf(out, "%s", wo); //DrawTextへ fclose(words); //ファイルの中身を破壊 words=fopen("word.txt", "w"); fclose(words); //変数内の文字列を消す strcpy(out, ""); strcpy(wo, "")

  • シェル関数引数のスペース文字列をgrepに

    下記のシェル関数 arg_space() 内で、grepを使いたいのですが。 'aaa bbb' などのスペースを含む文字列を引数として渡すとスペース後の文字列がファイル名と 認識されてしまいます。 -- arg_space.sh -- #!/bin/bash CHK_STR='aaa bbb' FILE_NAME='data/aaa.txt' function arg_space() { return `grep -c $1 $2` } arg_space $CHK_STR $FILE_NAME if [ $? -ge 1 ]; then echo 'Match !!' else echo 'No match.' fi exit 0 ------------------ ]# ./arg_space.sh grep: bbb: No such file or directory Match !! スペース文字を、grep に区切り文字として認識させないようにする 方法を教えて 頂けないでしょうか。 -- data/aaa.txt -- aaa bbb ccc ddd ---------------

  • 表示桁数をそろえた文字列を変数に格納したい

    ログファイルを、時間で検索するシェルスクリプトを作成したいと考えています。 変数searchStr に、ログから検索対象となる時間をループで生成したい。 例:「Jun 23 00:23」(※この文字列を作成したい。) 以下スクリプト作成しましたが 結果として、変数h、mが、1~9の時、searchStr は「Jun 23 0:23」や「Jun 23 0:3」になります。 時間と分の桁数が、変数が1ケタの場合、1→01としたい。 printfの%2dとか指定し、変数に入れてみたりしたのですが上手く文字列を生成することが出来ないのです。 (searchStr="Jun 23 `printf "%02d" $h` :" 等してみましたが、00が入っただけで、01とかになりませんでした。) #!/bin/bash for((h=0;h<24;h++)) do for ((m=0;m<59;m++)) do searchStr="Jun 23 "$h":"$m echo $searchStr #文字列確認 cat ログファイル | grep searchStr #ここで検索するための文字列を作成したい。 done done 良い解決方法がありましたら、ご教示お願いします。

  • 変数の扱いについて

    初めまして 仕事で簡単なシェルを作成していますが、ちょっと困っています。お分かりになる方がいらっしゃいましたら、お知恵をお貸しください。 外部ファイルとして変数を記述したファイルを作成しました。このファイルの内容を参照し、他で定義した変数を割り当てたいのですが、どうしても外部ファイルに記述した変数の文字を変数として認識してくれません。 書き方がおかしいのでしょうか? $ls MSG.sh MSG.txt ----- $cat MSG.txt Test $MSG1 ----- $cat MSG.sh #!/bin/sh MSG1=1 MSG=`cat MSG.txt` echo $MSG ----- $./MSG.sh $Test $MSG1 <--変数でなく文字として認識されてしまうう。 ---希望としてはこの様に表示して欲しい--- $Test 1 よろしくお願いします。

  • csh で入れ子変数

    csh で入れ子にした変数を使いこなせません。 例えば、 set i=0 set n=9 while ( $i <= $n ) set a_${i}=${i} (← 入れ子にした変数) cat <<EOF >>out.txt eval echo '$'a_${i} EOF end 期待している出力としては、out.txt に 1 2 3 ... としたいのですが、実際には「変数名の頭は英数字で」と 怒られ、うまくいきません。ご教授していただけないでしょうか?よろしくお願いします。

  • シェル(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です。 わかるかたがいらっしゃたら教えてください。 宜しくお願いします。

  • グローバルな変数を変数名を指定せずに変更することができるか?

    <script> g_hensu1 = "変数1"; g_hensu2 = "変数2"; g_hensu3 = "変数3"; g_hensu4 = "変数4"; g_hensu5 = "変数5";  ・  ・ 上記のようにhtml上に定義されている変数を 変数名を指定せずに変更できないでしょうか? 例えばHenkoという関数があり、 Henko(g_hensu1, g_hensu2, g_hensu3); とすると、g_hensu1~3の変数の値を空文字列にするという関数は どのような方法が考えられるでしょうか?

  • linuxのsedコマンド変数置換の質問です

    はじめまして。 要点だけになってしまいますが 教えていただきたいことがあってトピしました。 この構文では動きませんが僕がやりたいことは こういうイメージです。 111.txt 444 444 1.txt 111 222 333 444 a=`cat 111` echo $a 結果 444 444 1.txt | sed 's/222/$a/g'          ↑ ↑     置換対象 変数 word を $a に収まっている文字列で置換します。 結果 111 444 444 333 444 どなたかわかるかた教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl