• ベストアンサー

UNIXでのプログラムその2

wolvの回答

  • ベストアンサー
  • wolv
  • ベストアンサー率37% (376/1001)
回答No.6

若干修正: No4のソースで、消し忘れの行と冗長部分を削除しました。 #!/bin/awk -f { str = $0 NVAR=0 varbase=$1 #shori str=par_replace(str,varbase) #output for(i=1;i<=NVAR;i++){ print VARNAME[i]" = "VARVAL[i] } print str } function par_replace(str,varbase){ while(match(str,/\([^()]*\)/)){ NVAR++ VARNAME[NVAR]=varbase"_"NVAR VARVAL[NVAR]=substr(str,RSTART+1,RLENGTH-2) sub(/\([^()]*\)/," "VARNAME[NVAR]" ",str) } return str }

Kasaoka-Taroh
質問者

お礼

ばっちり動きました。 感謝!感謝!です。 これを参考にあとは自分なりに拡張させていけそうです。 本当にお世話になりました。

関連するQ&A

  • UNIXのcshについて。

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

  • unixでの文字列置換方法

    UNIX上のテキストファイル内の以下で以下の様な置換をおこないたいのですが いい方法が思いつきません。どなたか教えて下さい。 cj = 5.0e-12   ↓ cj = 0 ”cj”の部分は特定のキーワードが入ります。方法は特に問いません。 awkかsedあたりでできるとメンテナンスもやりやすいのでいいかなという程度です。

  • UNIXのシェルスクリプト

    UNIXのシェルスクリプトで以下のようなことをやりたいのですがいい方法を教えて下さい。 ファイルの中にある文字列があります。 たとえば”CURREND_DIR” この文字列をシェルスクリプトでカレントのディレクトリパスに変換したいのですが いい方法が思いつきません。 set dir_data = ‘pwd‘ sed -e ’s/CURRENT_DIR/$dir_data’ ファイル名 でできるかなと思ったのですが、”CURRENT_DIR”が”$dir_data”に置換されてしまいます。 さらにdirパスが”/”で区切られていることも問題のようです。

  • UNIX sed

    UNIX初心者なのですが、 sedをつかって、行末を改良文字に変換する方法ってどのようにやるのですか? sed 's/$/\n/' では、行末をnにしてしまいます。 詳しい方教えてください!

  • UNIXでのプログラム

    UNIXでのシャルスクリプトでもAWKでもいいのですが以下のようなことがやりたいのですが、いい方法が思い つきません。どなたか教えて下さい。 テキストファイルがあり、そのファイル中の”//”という文字から行末までは削除したファイルを作りたい。 ”//”という文字列は文字列の途中にあるケースも前後にスペースが存在して単語として存在しているケースもあります。

  • コード変換を行う

    ある要件でレコード内のTAB+LFをLFに変換したいのですが、 プログラムは作成せず、シェルレベル(awk,sedレベル)で 処理したいのですが、有効な手段をご存知の方はいらっし ゃいませんでしょうか? よろしくお願いいたします。

  • UNIXでシェルスクリプトを作ることを始めましたが、まだ未熟者です。

    UNIXでシェルスクリプトを作ることを始めましたが、まだ未熟者です。 既存のスクリプトが複数あるのですが、 全てに対して同じ処理を入れ込む必要があります。 入れ込む内容はレイアウトを変更するだけ(awkで書く予定)なので簡単なのですが、 既存スクリプトに全て書き込むのは大変です。 また入れ込んだ処理内容に変更があったときに、全てのスクリプトに変更をひとつひとつ反映させるのは大変です。 入れ込む処理を別ファイルで作成しておいて、 既存スクリプトからはこのファイルを参照するだけにしたいのですが、 どのように書いたらいいのでしょうか?教えてください。

  • UNIX コマンドの練習方法について

    こんにちは、UNIX初心者です。 sed, awk などのUNIXコマンドを、OSをインストールせずに、現在のwindows 98SE のままで、 1.ブラウザ画面内で、どこかのサイトを利用して、   ブラウザ内で、UNIX or Linuxコマンドの練習できないかどうか? 2.みなさんは、どうやってUNIXコマンドをwindows上で、練習されてますか? 3.Linux を同マシンにインストールする場合、OS+作業領域の容量ザイズは、1GB? くらいでしょうか? ---------------------------------------------- 知人からは、windows98 のままで、Linux をインストールして、ダブルOS(デュアル)で、どうか? と言われております。 どなかた、教えてください。

  • UNIXで、とあるテキストに対して2文字区切りで改行をいれるには?

    UNIXのシェルスクリプトで、このような動作ができないものかどうか考えています。 あるテキストファイルの内容を、2文字ごとに区切って改行を入れるように加工する 例えば file1.txt が以下のような内容であれば --file1.txt-- 000092 027301 01 0263000001 2文字ずつ区切って改行を挿入したファイル --file2.txt-- 00 00 92 02 73 01 01 02 63 00 00 01 を生成したいと思います。 ここで元のファイルは必ず、半角の数字のみで構成されており、 1行の文字数は最低2文字以上あり、なおかつ奇数個の文字列は存在しないものとします。 awk や grep や sed を組みあわせて考えているのですが、 なかなか解決に至りません。 どなたかお知恵を拝借願います。

  • ある単語を含む行と、1つ前の行とを削除するシェル

    UNIX初心者です。 シェル(Korn)で、あるファイル中に、単語 "iwa"を含んだら、その行と、1つ前の行とを削除したいシェルを作りたいのです。  つまり、grep, sed, awk などで、"iwa"を含む行がみつかったら、その行(iwaを含む行)と、なおかつ、1行前の合わせて、2行を削除するシェルを作りたいのですが、行番号(NR?)などを使うのでしょうか? よろしく、お願いします。