• 締切済み

awkとsedを使ってある単語が何回出てきているのかという頻度を調べたいのですが、誰か助けて下さい!!!

まず、単語とその単語の得点が書かれてあるファイルがあります。 ●ファイル例(番号、単語名、得点) 1_フリップフロップ______________3510.00 2_入力________________________2.00032 3_回路__________________________23.666 4_出力__________________________230.00 5_状態__________________________325.04 6_順序回路____________________220.90 7_入力端子____________________71.020 8_論理_____________________1.0000003 9_マスタフリップフロップ_________143.70 10_パルス幅_____________________35.55 11_TCP/IP___________________6666.6 ・ ・ ・ ある文章中に、このファイルの単語が出現する回数と、各々の単語の得点の合計、 すべての単語の得点の総得点を出力させたいのです。 出力としては次のような形が理想です。 ●出力ファイル例(はじめに総得点、その下に番号、単語名、得点、出現回数、合計) 文章の総得点_=_35553836.07327262 1_フリップフロップ______________3510.00_____________23___________80730.00 2_入力________________________2.00032_____________19___________38.00608 3_回路__________________________23.666_____________14____________331.324 4_出力__________________________230.00_____________17____________3910.00 5_状態__________________________325.04_______________4____________1300.16 6_順序回路____________________220.90_______________8____________1767.20 7_入力端子____________________71.020______________15____________1065.30 8_論理_____________________1.0000003_______________6_________6.0000018 9_マスタフリップフロップ_________143.70_______________7_____________1005.90 10_パルス幅_____________________35.55______________15______________533.25 11_TCP/IP___________________6666.6________________9_____________59999.4 ・ ・ ・ なお、得点の桁はできるだけどのような桁も表示できるようにしたいと考えています。 またファイル中の「_」は空白を意味しています。 どなたかどうかよろしくお願いします!!!!!!!!

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

本来のデータがどんなものか見当がつかなかったので、ファイル例にあるテキストを そのままテキストファイルとして#1のお礼欄にあったスクリプトを使って実行してみましたが >しかし、『文章の総得点』の値と各々の単語の『出現回数』の値が0になってしまいます。 少なくとも0にはなっていませんでしたよ。 可能なら、その状況が起こる入力データと、使っているawkがどういうのものなのか(とりあえずOS名あたりでよいです)を 補足してください。 入力データはできれば必要最小限に切り詰めておいてください。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

その他(プログラミング)辺りに移ったほうがいいと思いますが、それはおいといて。 >今の段階では次のプログラムがわかっているのですが、うまく出力されずに困っています。。。 具体的にどのような問題があるのでしょう。 「フリップフロップ」や「回路」などに対応するの数値がおかしいとかですか?

GodSalad
質問者

補足

回答ありがとうございます! 出力ファイルに『番号』と『単語名』はきれいに表示されます。 しかし、『文章の総得点』の値と各々の単語の『出現回数』の値が0になってしまいます。 また、各々の単語の『得点』の値がもともとのリストの値と違っていたり、『合計』が表示されないという状況であります。 どこをどうしたらいいのか理解できず、泣きそうです。。。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

awkとsedでやれって、ここはC/C++用の場所ですが? あと、スクリプト(プログラム)の作成依頼(丸投げ)でしたら 禁止項目にひっかかりますよ。 書きかけでも何でもあるのならそれも出したほうがアドバイスがもらえるでしょう。

GodSalad
質問者

お礼

ご指摘ありがとうございます。 awkとsedを載せる場所が探せず、C/C+の項目に質問せざるをえませんでした。 今の段階では次のプログラムがわかっているのですが、うまく出力されずに困っています。。。 BEGIN\ .... { .... file = "Points.txt" .... for (Points_length=0 ; getline buffer < file ; ++Points_length) .... .... { .... .... split (buffer, fields, /[ \t]+/) .... .... CountOf [fields [2]] = 0 .... .... Number [Points_length] = fields [1] .... .... Words [Points_length] = fields [2] .... .... Scores [Points_length] = fields [3] .... .... } .... close (file) .... } {for (word in CountOf) CountOf [word] += split ($0, _, word) - 1} END\ .... { .... Total = 0 .... for (i=0; i<Points_length; ++i) .... .... { .... .... Counts [i] = CountOf [Words [i]] .... .... Total += SubTotals [i] = Scores [i] * Counts [i] .... .... } .... print "文章の総得点:", Total .... for (i=0; i<Points_length; ++i) .... .... {print Number [i], Words [i], Scores [i], Counts [i], SubTotals [i]} .... }

関連するQ&A

  • 論理回路の問題についての質問です。

    論理回路の問題についての質問です。 入力をx,Dフリップフロップの出力の組を(y1,y2),出力をzとし、以下の論理式で表されるDフリップフロップを2つ用いた順序回路の機能を、DフリップフロップではなくTフリップフロップを2つ用いた順序回路として実現せよ。ただし、Dフリップフロップの時点t+1における出力は、時点tにおける入力Dと一致し、Tフリップフロップの時点t+1における出力は時点tにおける入力Tと時点tにおける出力との排他的論理和として与えられる。 D1=¬x・y1+x・¬y1 D2=y2・y1+¬y2・¬y1 z=y1・y2 論理式を簡単化すると、 D1=x(xor)y1 D2=¬{x(xor)y1} となるので、Tフリップフロップを用いた場合、計算すると図のような回路になりましたが、この回路で正しいでしょうか? また、基本的なTフリップフロップは、いつも問題の様に時点t+1における出力は時点tにおける入力Tと時点tにおける出力との排他的論理和となっているのでしょうか? 教科書には立ち上がりで反転する、と書いてありましたが、排他的論理和については触れていませんでした。 よろしくお願いします。

  • フリップフロップについて次の問題がわかりません。

    5->6->2->1と表示して1に戻る回路を作成する.ただし,2入力NANDとDフリップフロップのみを使用することとし,Dフリップフロップは正負両方の出力を使用して良い この回路を,2ビットのカウンタとカウンタ値から出力を生成する組み合わせ回路とで実現する.カウンタはいま何桁目を表示しているのかだけを記憶しており,カウンタ値が00,01,10,11のときはそれぞれ一,十,百,千の桁を表すとする.組み合わせ回路はカウンタ値{C1,C0}を入力とし,それが示している桁の値を4ビットの符号なし二進数{1,2,6,5}で出力する. 以下の問に答えよ. 1.この組み合わせ回路の論理式を示せ. 2.このカウンタを設計し,図示せよ. 3.2で設計したカウンタの値を1の組み合わせ回路に入力し,組み合わせ回路の出力をDフリップフロップで保持することにして,全体を完成させて図示せよ. 4.この回路の最大動作周波数を計算せよ.ただし,Dフリップフロップの遅延時間,セットアップ時間,ホールド時間はそれぞれ10.5ns,3.0ns,1.0nsで,NANDのH→LとL→Hの伝搬遅延時間はそれぞれ6.5ns,5.5nsとする. 最終的な解答に至るまでの過程を説明すること. という問題がわかりません。・・・ よろしくお願いします。

  • カウンターを使い回路を作成する問題です

    5->6->2->1と表示して5に戻る回路を作成する.ただし,2入力NANDとDフリップフロップのみを使用することとし,Dフリップフロップは正負両方の出力を使用して良い この回路を,2ビットのカウンタとカウンタ値から出力を生成する組み合わせ回路とで実現する.カウンタはいま何桁目を表示しているのかだけを記憶しており,カウンタ値が00,01,10,11のときはそれぞれ一,十,百,千の桁を表すとする.組み合わせ回路はカウンタ値{C1,C0}を入力とし,それが示している桁の値を4ビットの符号なし二進数{O3,O2,O1,O0}で出力する.例えば1234場合は,カウンタが00の時は一の桁の4を,01の時は十の桁の3を,という風に組み合わせ回路が出力する. 以下の問に答えよ. 問1 この組み合わせ回路の論理式を示せ. 問2 このカウンタを設計し,図示せよ. 問3 問2で設計したカウンタの値を問1の組み合わせ回路に入力し,組み合わせ回路の出力をDフリップフロップで保持することにして,全体を完成させて図示せよ. 問4 この回路の最大動作周波数を計算せよ.ただし,Dフリップフロップの遅延時間,セットアップ時間,ホールド時間はそれぞれ10.5ns,3.0ns,1.0nsで,NANDのH→LとL→Hの伝搬遅延時間はそれぞれ6.5ns,5.5nsとする. この問題がわかりません。 よろしくお願いします。

  • パルス入力でのホールド回路?

    デジタルレベルの入力がパルスであります。パルス入力が始まったら常時ONとなって、パルス入力がなくなったらOFFとなる回路を考えています。タイマー回路(555)とかフリップフロップを見ているのですが良く解りません。ぜひ皆さんの力を貸してください。よろしくお願いします。

  • Dフリップフロップを用いて・・・

    大学で電気電子工学分野を専攻している者です。 2進数の2の補数を1ビットずつ直列に求めるMealy型同期式順序回路をDフリップフロップを用いて設計する(2進数はLSBより1ビットずつこの回路に入力され、2の補数の該当桁が1ビットずつ出力される、例えば0011が入力されると0010が出力される)という問題で、まず状態遷移図を書きたいのですが、入力、出力はいいとして、何を「状態」とすればいいのかがわかりません。 乱文ですがよろしくお願いします。

  • パルスの位相差(90度)発生回路

    あるパルス入力より、そのパルスと位相が90度ずれているパルスを出力する方法を探しています(いわいるロータリーエンコーダーの出力のようなA,B相の出力波形がほしいのです)。 当方、IC(74HC74、74AC74等のフリップフロップ)にてパルスに位相差を設けられる回路が作れ、この方法だと0、90度のみの位相差だけでなく簡単に多くの位相差を作ることが出来ると聞きました(ただし、発振には期待値の4倍の周波数が必要?)。 どなたかこの回路を知っている方、教えて頂けませんでしょうか? よろしくお願いします。

  • 順序回路のいわゆる「状態」とは、どこの何を指しているのか?

    他スレでフリップフロップについての質問があったので読んでみたのですが、「状態」という言葉の概念が よく分からないので質問させていただきます。 他スレで「順序回路は回路に入力しても状態によって順序的に出力される回路のこと」 あるいはある本では「回路内部に状態が保持されているために出力信号の組み合わせと回路内に保持された値によって決まる。」 というように調べることができたのですが、ここでいう「状態」とは何の、どういう状態のことを言っているのか、意味がわかりません。 入力データのことなのか、FFにあらかじめ入力されていた初期値のことなのか・・・ みなさん教えてください。よろしくお願いします。

  • レジスタ、フリップフロップ、ラッチについて

    レジスタ、フリップフロップ、ラッチそれぞれの違いがうまく分類できていません。 何となくですが、論理回路フリップフロップを用いた記憶装置がレジスタ、というイメージであり、ただラッチとフリップフロップの分類の違いが理解できていません。 それぞれの動作や原理というよりは、分類についてご説明していただけないでしょうか。

  • 電験三種 論理回路の考え方

    いつもお世話になります。 電験三種の勉強をしているのですが、論理回路の考え方についてどうも理解出来ませんのでご教示をお願いいたします。 過去問で、添付画像の論理回路のタイムチャートで、入力、出力の組み合わせが正しいは1~5のうちどれかという問題なんですが、 一つずつ出力を順を追って考えていけばわかる問題だとは思うのですが、どうも私の場合こういう類の問題が苦手です。 わかりやすい問題の解き方はないでしょうか? たとえばこういったフリップフロップが含まれている回路をブール代数をつかって表す事も可能なのでしょうか? 以上ご教示お願い致します。

  • 論理回路問題

    デジタル値で8ビットの擬似正弦波を発する論理回路の設計をしたい。 1、Dフリップフロップを用い、nを入力し4n(8≦n≦64)をカウントする時に値を0にリセットする8ビット同期式のカウンタの回路図を書きたい 8ビットのインクリメント回路を使ってよい。 2、1の正しく動作する為の最大動作周波数を求めたい 3、8ビットのtと6ビットのnを入力してsinπt/2n(8≦n≦64)の近似値を出力する論理回路の回路図を書きたい。sin関数の近似にはtayler展開を使用する 8ビット加算回路、減算回路及び8ビット入力16出力の乗算回路を使ってよい 4、3の回路の入力tが変化したときの伝播遅延時間は? 5、1と3より目的の回路を書く。 6、5での回路が正しく動作する最大動作周波数は? NOT,NAND、NOR 各ゲートの伝播遅延時間 2ns XOR,XNOR  各ゲートの伝播遅延時間 3ns Dフリップフロップからのクロック入力の有効エッジからの伝播遅延時間 3ns Dフリップフロップのセットアップ時間 5ns Dフリップフロップのホールド時間 1ns インクリメント加算、減算回路の伝播遅延時間 5ns 乗算回路の最大伝播遅延時間 30ns どなたか上記の問いについてアドバイス頂けないでしょうか? 宜しければお願いします