- 締切済み
リストファイルに一致する個数のカウントについて
以下にリストファイルと、インプットファイルがあります。 リストファイルのそれぞれにインプットファイルの中で何個一致するかを出力させたいです。 目的にかなうawkや perlなどのスクリプトを教えてほしいです。 list.txt a b c d ・・ input.txt 1 a b c 2 a d 3 4 b c ・・ output.txt a 2 b 2 c 2 d 1 ・・
- hiroponsettu
- お礼率21% (3/14)
- Linux系OS
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- trapezium
- ベストアンサー率62% (276/442)
#2 です。 input.txt 1 a b c 2 a d a 3 ad 4 b c awk 'FNR==NR{a[o[n++]=$1]=0;next} {for (i=1;i<=NF;i++)if ($i in a)a[$i]++} END{for (i=0;i<n;i++)print o[i],a[o[i]]}' list.txt input.txt a 3 b 2 c 2 d 1 少し説明しとくと、a[] が list.txt の連想配列、o[] はその順序、n は行数 最初の FNR ブロックが list.txt に、次の {} が input.txt (以降複数ファイルでも) に対応、NF までの各項目ごとに a[] に一致する単語のカウント
関連するQ&A
- リストファイルと一致する行の抽出
2つのファイルがありまして、list.txtでリストアップしたキーワードに一致するinput.txt一行目の行を抽出したいです. fgrep -f list.txt input.txt ではout of memoryで行えません。 他に何かいい方法がありませんでしょうか? あれば教えていただきたいです。 list.txtはsortせずにこの順序を維持したいです。 <list.txt> d c a h g x k . . <input.txt> a 12 43 .. b 29 44 .. c 12 66 .. c 33 55 .. d 44 55 ..
- 締切済み
- その他(プログラミング・開発)
- 3の倍数行まで1から数字を挿入し,カウントアップしていく方法
よろしくお願いします.タイトル通り「3の倍数行まで1から数字を挿入し,カウントアップしていく方法」をテキストファイルで処理したいと思っています. 具体的にインプットとアウトプットは以下のようにしたいです. input.txt ----------------- a b c d e f g h i ・ ・ ・ ・ ・ output.txt ----------------- a,1 b,1 c,1 d,2 e,2 f,2 g,3 h,3 i,3 ・,4 ・,4 ・,4 ・,5 ・,5 perlでのファイルの読み込ませ方は理解していますので 読み込んで出力するまでの処理を教えていただけないでしょうか. よろしくお願いします.
- ベストアンサー
- Perl
- 二つのファイルから条件に一致する行を抽出
AとBの二つのファイルがあります。 Aの2列目3列目の間に存在するBの2列目のファイルを抽出してCのファイルを作成したいです。 awkのifでチマチマ作ればできるとは思うのですが、他に簡単にできる方法はないでしょうか? awkだけでなくperlやpythonなどでも問題ないです。 <A> A 10 20 B 30 40 C 50 70 D 90 110 <B> あ 15 い 25 う 55 え 75 お 95 <C> あ 15 う 55 お 95
- ベストアンサー
- Python
- awkでファイルから特定の行を抽出する方法
初心者です。 ファイル(a.txt) 2005.12.05 2.5,1.0,a01 5.0,2.0,9.5 2005.12.06 6.5,4.0,3.2 b1,3.0,7.5 2005.12.07 ・ ・ というようなファイルから2、5、8・・・行目を 抜き出しファイル(b.txt)に「awk」又は「perl」で出力する方法を教えて下さい。
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプトで複数ファイルを交互に操作する方法
Bシェルのスクリプトで複数のファイルを交互に操作したいと考えています。 例えば、 A.txt A A B.txt B B という2つのファイルがあったとして、これを交互に読み取り、 C.txt A B A B というファイルを作成したいと考えています。 現在は1行ごとに別ファイルを作成し、最後にそれをマージするという変な方法をとっています。 awkやperlを使用しないで、純粋にBシェルのスクリプトだけでスマートに実現するにはどのような方法がありますでしょうか。 よろしくお願いします。
- 締切済み
- Linux系OS
- awkで複数ファイルのある列を抽出し出力したい
awkプログラミングの初心者です。 今、複数ファイル(1000ファイル)から、それぞれある列(すべて同じ列番号)のデータを抜き出して、1つのファイルに出力したいと考えています。 具体的には、1列目に共通項、2列目以降に1000ファイル分の抽出された列を、合計1001列となるような1つのファイルとして出力したいと考えております。 awkを使って出力するには、どのようなスクリプトを作ればよいか教えていただけませんでしょうか。 <イメージ> 元となるファイル(例えば下記のように3ファイル、実際には1000ファイル)があります。 file1.txt: 1 10 2 15 3 17 : : 1000 25 file2.txt: 1 5 2 40 3 22 : : 1000 17 file3.txt: 1 9 2 20 3 16 : : 1000 32 出力後のファイルイメージ: 1 10 5 9 2 15 40 20 3 17 22 16 : : : : 1000 25 17 32 ちなみに、自分で作成したawkスクリプト(下記)では、上記出力後のイメージとは異なり、 縦にデータが結合されてしまいました。 awk `{print $2}` ./file*.txt > Output.txt 出力後のファイル: 10 15 17 : 25 5 40 :
- 締切済み
- Linux系OS
- いくつかのファイルの一致を確認するプログラミングの作り方。
いくつかのファイルの一致を確認するプログラミングの作り方。 例えば7個のtxtファイル a, b, c, d, e, f, g があるとします。 a, b, c, d, e, f, g はそれぞれのファイルのファイル名です。 そのうち、 a, b, g のファイルの内容が全く同じであった場合、 a, b, g は一致していると判断するには、どんなプログラムを作成すればよいのでしょう? ちなみにファイルの中身は 数字が配列のように並んでおり、文字数は5000文字程度です。
- ベストアンサー
- 大学・短大
- 2つのファイルを結合してファイルを出力する方法
以下のような二つのファイルがあるとします。 1_input.csv: num,cap 1,A 2,B 3,C 4,D 5,E 2_input.csv: num,sma 2,a 2,b 4,c 5,d 5,e この2つのcsvファイルからnumを比較して同じ値の時に列を追加するような以下のファイルを作りたいです。 output.csv: num,sma,cap 2,a,B 2,b,B 4,c,D 5,d,E 5,e,E awkなどを使って一列目を比較してpasteで結合などを考えましたが知識不足でうまくできない状況です。どなたかご教授いただけませんでしょうか。よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- awkを使って文字列処理の問題
awkで以下のことをやりたいですが、 a.txtの中身は aaaa bbbb cccc の三つのレコードがあります。 b.txtの中身は 東京a 埼玉b 千葉c 東京d になってます。 ファイルa.txtのみっつのレコードのを読み込んできて、b.txtに対して検索して、東京 という文字列があれば、そのレコードは、aaaaに置き換えて、あるファイルに出力する ようなスクリプトを書きたいです。 どう書けば、いいですか?教えていただけませんか?
- ベストアンサー
- その他(プログラミング・開発)
- ある列をキーにして、複数行を1列で出力したい
AWKで、以下の処理をしたいです。 ・1列目をキーにしたテーブルを作る ・1列目共通で2列目が複数ある場合は、並べて記載したい。 どなたか、スクリプト案お願いします。 例 Input file A あ B あ B い C い Output file A あ B あ/い C い
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございました。できました