MillenniuM の回答履歴

全139件中101~120件表示
  • テキストを処理するプログラム

    めぐみと申します。 プログラムの初心者ですがよろしくお願いいたします。 Linuxで下記のようにテキストを処理したいです。 どのようにすればいいでしょうか? お時間ある方がいらっしゃりましたらぜひご指導頂きたくよろしくお願いいたします。 A.txtとB.txtがあります。 ●A.txtには kato megumi meguchan ●B.txtには 1986 3 6 03 06 ●結果下記のように出力したいです。 kato198636 kato1986 kato36 kato0306 kato19860306 megumi198636 megumi1986 megumi36 megumi0306 megumi19860306 meguchan198636 meguchan1986 meguchan36 meguchan0306 meguchan19860306

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

  • 外部ファイルからの指定行と指定文字の削除

    perlで、外部のCSVファイル(01_01.csv)を読み込み、「先頭の9行」とその行以降の「先頭9文字」を削除したものを [01_01_out.csv]として保存したいのですがどのようにしたらいいのでしょうか。 ご回答、よろしくお願い致します。 例) 読込ファイル:01_01.csv ---------------------------------------- AAA BBB CCC DDD EEE FFF GGG HHH 00:00:00,1 00:01:00,2 00:02:00,3 00:03:00,4 00:04:00,5 00:05:00,6 (略) 10:00:00,101 10:01:00,102 10:02:00,103 10:03:00,104 10:04:00,105 10:05:00,106 ---------------------------------------- 出力ファイル:01_01_out.csv ---------------------------------------- 1 2 3 4 5 6 (略) 101 102 103 104 105 106 ----------------------------------------

    • 締切済み
    • pming
    • Perl
    • 回答数4
  • どれをダウンロードすればいいoracle java

    ubuntu13.04で最新版のJavaをインストールしたいのだが、どれをダウンロードすればいいのですか? http://java.com/ja/download/manual.jsp?locale=ja で

  • pythonでのスクレイピング

    python2.7とBeutifulSoupで特定のHPからHTMLを取ってきて処理するプログラムを作っているのですが、正規表現でちょっと困っています。 soup=BeautifulSoup(HTML) s=soup.findAll("a"[,href=○○○、title=○○○]) でリンク<a>のHTMLを取得でき[]で絞込みが出来ます。さらに○○○には正規表現を使うことが出来ます。私はtilteにAを含まないもの、かつBをも含まないもの。という条件指定をしたいのですが、 正規表現で「もしくは「|」」は見当たるのですが「かつ」がみあたりません。 今は絞込みの後、if:continueを使ってBがあれば処理をパスするようにしていますが他によい方法は無いのでしょうか? beautifulsoupの使い方も合わせて教えていただけるとありがたいです。

  • perlチェックでエラーが出て困ってます

    csvファイルが存在するかどうか確認するためif節でheadを使っています $data_hokkaido = "http://denkiyoho.hepco.co.jp/data/juyo_hokkaidou.csv"; if (head "$data_hokkaido" ){ use LWP::Simple; $content = get($data_hokkaido); } こうするとエラーになるのでperlチェックをしてみたところ String found where operator expected at test.cgi line 393, near "head "$data_hokkaido"" (Do you need to predeclare head?) と警告が出ました if節を外して $data_hokkaido = "http://denkiyoho.hepco.co.jp/data/juyo_hokkaidou.csv"; use LWP::Simple; $content = get($data_hokkaido); とするとエラーは出ず、問題なくデータ取得できるので、headに原因があるのだと思いますが、具体的に何が悪いのでしょうか? ちなみに何のデータを取得しているかと言いますと、電力各社の電気予報のデータで、 エラーが出るのは北海道電力ので、同じようにファイルがダウンロードされる形式になっている関西電力部分 $data_kansai = "http://www.kepco.co.jp/yamasou/juyo1_kansai.csv"; if (head "$data_kansai" ){ use LWP::Simple; $content = get($data_kansai); } ではエラーは出ません 理由がお分かりの方ぜひ教えてください。 よろしくお願いします。

    • ベストアンサー
    • choei
    • Perl
    • 回答数1
  • 設定ファイルを扱うライブラリについて

    Linux環境で開発をしているのですが、アプリケーションの設定ファイル(.ini)のようなものを 扱うためのライブラリとして何か標準的なものってありますでしょうか? 一番簡単な自作手順はnameとvalueを並べておいて読み込むのだと思いますが、 コメントの記載や、代入先変数型への対応や、場合によってはメンバ変数への代入の指定、 .iniファイルの暗号化・復号化などやりたいことが増えた際に、自作では手間が大きいです。 さらに、私の開発ではアプリケーション内の各モジュール毎に設定ファイルを持ち、 ハードウェアに依存して値が変わりうるといった設定ファイルの多いシステムになりそうです。 こういった場合に、皆さんはどのように対応なさっていますか? 御紹介いただければ大変ありがたいです。 ※Linux内の各アプリケーションでも、各々パラメータファイルの作りが違うように見える辺り、  標準的なライブラリや手順といったものは無いのかも、、、と薄々思っています。

  • ncursesで...

    色を変化させた文字をncursesライブラリを使用し,表示できることはわかったのですが,色を変化させた文字を常に変化させておく方法はないのでしょうか?(文字を表示する関数を呼び出しで実行すると2回目呼び出したときに、最初に呼び出した方の文字の色が変化してしまいます・・・) 実行環境はvineLinuxを使用し,C言語で記述しています.(以下に関数のコード記載します) void MakeCard(int x,int y,char crd[]){ start_color(); init_pair(COLOR_RED,COLOR_RED,COLOR_WHITE); init_pair(COLOR_BLACK,COLOR_BLACK,COLOR_WHITE); if(crd[0]=='D' || crd[0]=='H')/*受けた文字列の先頭がDかHなら文字を赤くする*/ attrset(COLOR_PAIR(COLOR_RED)); else attrset(COLOR_PAIR(COLOR_BLACK)); mvprintw(y+24,x+7,"%s",crd); refresh(); } 改善点などなんでも良いです。未熟な自分にご享受ください!お願いします!

  • Bシェルでファイルの更新日時を取得

    Bシェルでファイルの更新日時(YYMMDD)を取得する方法を教えてください。 取得した更新日時を変数に代入したいと考えています。 ご回答をよろしくお願いいたします。

  • 入れ子になっているhtmlのXPath指定方法

    お世話になります。 下記のようにclassが入れ子になっている部分全体を、XPathで指定したいのですが どのように記述すればよいでしょうか? <div class="A">  <div class="B">   <h1>   </h1>  </div>  <div class="C">   <p>   </p>  </div> </div> XPathについては全く知識がなく調べながらなのですが、なかなか思うようにいきません。 //div[@class="A"]/div[2]/h1/div[3]/p のようにしてみましたが間違っていました。 使用する場所はyahoopipesの XPath fetch pageのモジュールです。 宜しくお願いします。

    • 締切済み
    • tse-sie
    • XML
    • 回答数1
  • perl初心者です。宜しくお願い致します。

    ファイルの容量が大きく。perlを使用してデータの集計をしています。 "A"がきたらflag1をたてなさい。 "B"がきたらflag2をたてなさい。 "C"がきたらflag3をたてなさい。 これでAとBとCを抜き取ること&AからCまでの時間を取得したのですが、 Bの数のmaxの値だけを抜き取りたいのですが、Bがきたときの数をすべて 出力してしまいます。下記の文だと、Bが4回きたら、1,2,3,4と出力してしまいます。 それで4だけを出力したいのですがどのように書き換えたらようか教えて頂けますでしょうか。 '----------------------------------------------------------------------------- open (IN,"< $ARGV[0].txt") or die; open (OUT,"> $ARGV[0]_out.txt") or die; $flag =0; my $a, $b, $c; $count = 0; ####################################################### while($line =<IN>){ ($time,$data) = split(/\s+/,$line); if($data eq "A") { $flag=1; $a = $time; #print OUT $line; #print OUT "\n"; } elsif($data eq "B"){ $flag=2; $count++; $count == $data; print OUT ("$count\n") } #print OUT ("$count\n"); elsif($data eq "C"){ $flag=0; $count=0; $b = $time; $c = $b - $a; print OUT ("time $c\n") } } -------------------------------------------------------------------------------

  • perlでCSVをソートする方法について

    perl初心者です。いつもありがとうございます。 perlでcsvファイル(1行のカラム数は200)、総行数は約3万行のファイルを37番目のカラム(-25以上25未満の数値データ)で降順ソートしその値によって行数がだいたい均等になるよう3分割し、2番目のカラムに文字でも数字でもよいのですがその4つのグループごとにフラグ(例えば1,2,3)を入れたいと思ってます。グループ化については境目の37番カラムの値は重複している場合が多いと思うのですがその場合は下(別に上でもかまいません)に入れるものとします。 ソートロジックは過去の質問を参照して理解しましたがグループ化しフラグを入れるルーチンがうまく作れません。下記のように作ったのですがこの先同じことを何度もやらなくてはならないので先に進めません。どなたかお助けください。最終的にやりたいことはカラム37でグループ化→カラム2にフラグを立てる、次にカラム2とカラム38(-25から0までの数値)でソートし同様に同じ行数になるようにグループ化→カラム3にフラグを立てる、さらにカラム2とカラム3とカラム39(-25以上25未満の数値データ)でソートし・・・同様に繰り返し最終的に1グループが100件(行)~150件(行)になるようにしたいのです。つまり約3万件のデータを3*4*2*4*2=192分割(5列の値で分類)したい、そしてどのような範囲で分割したかという情報も得たいのです。 use strict; use warnings; use utf8; use Encode; binmode STDOUT, ':encoding(utf-8)'; my $dir = './data'; # 処理するディレクトリ my $motoFile = 'customer.txt'; # もとファイル open my $fh, '<:encoding(cp932)', "$dir/$motoFile" or die 'ファイルが開けません。',"$!"; my %sorted; while (my $line = <$fh>) { my $key = (split /,/, $line)[37]; push @{$sorted{$key}}, $line; if (@{$sorted{$key}} == 1000) { open OUT, '>>:encoding(cp932)', "$dir/$key.tmp" or die "Can't open: $!"; print OUT @{$sorted{$key}}; close OUT; @{$sorted{$key}} = (); } } open OUT, '>:encoding(cp932)', "$dir/out.txt" or die "Can't open: $!"; foreach my $key (sort { $b <=> $a } keys %sorted) { if (-e "$key.tmp") { open IN, '<:encoding(cp932)', "$dir/$key.tmp" or die "Can't open: $!"; print OUT while <IN>; close IN; } print OUT @{$sorted{$key}} if @{$sorted{$key}}; } close OUT; #↓↓↓↓ここからフラグを作成するルーチン # 行数を調べ3つに分けるルーチン my @colum37; open IN, '<:encoding(cp932)', "$dir/out.txt" or die 'ファイルが開けません。',"$!"; my @in = <IN>; close IN; my $gyousuu = scalar(@in); my $amari = $gyousuu % 3; if ($amari == 0) { my $groupGyousuu = ($gyousuu-$amari)/3; print "総行数は$gyousuu","で、1グループの行数は$groupGyousuu","ほど、余りは$amari\n"; # あまりが0の時、group1は@inの0行 ~$groupGyousuu-1行まで #         group2は@inの$groupGyousuu行 ~$groupGyousuu*2-1行まで #         group3は@inの$groupGyousuu*2行~$groupGyousuu*3-1行まで foreach my $num (1..2) { push @colum37, (split /,/, $in[$groupGyousuu*$num])[37]; # これは境目の先頭の37番目 } print "@colum37\n"; #これでここまでは完成、分けるべき値がこの配列に入っている。 open OUT, '>:encoding(cp932)', "$dir/out.txt" or die "Can't open: $!"; foreach my $line (@in) { my @line = split /,/,$line; if ($line[37]>=$colum37[0]) { $line[1] = 1; }elsif ($line[37]>=$colum37[1] and $line[37]<$colum37[0]) { $line[1] = 2; }elsif ($line[37]<$colum37[1]) { $line[1] = 3; } $line = join (',',@line); print OUT $line; } close OUT; } elsif ($amari == 1) { この後未作成

  • Linux の shell プログラミングについて

    すみません、どなたがご存じでしたら教えてください。 Linux の shell プログラミングですが、 実行するコマンドをそのまま表示する良い方法が無いでしょうか? 現在は実行するコマンドをechoで書いています。 たとえば次のような感じです。 #!/bin/bash var1=/etc echo 'ls -l $var1 | wc -l' ls -l $var1 | wc -l 結果 ls -l $var1 | wc -l 205 でも(echoで)同じ内容を2行書きたくないので いろいろ調べて次のようにしてみました。 #!/bin/bash var1=/etc set -x ls -l $var1 | wc -l set +x 結果は + ls -l /etc + wc -l 205 + set +x 思ったようになりませんでした。 他に良い方法が何かありますでしょうか? よろしくお願いいたします。

  • zshで名前に半角スペースを含むファイルの削除

    test space.txt という名前のファイルを削除したい時 aaa="test space.txt" rm $(echo ${aaa}|awk '{print "\""$0"\""}') とやってダブルクォートでくくっても、 rm: "test: No such file or directory rm: space.txt": No such file or directory となって、"test と space.txt" で分かれてしまいます。 どうすれば良いのでしょうか>< zshです

  • [awk]でデータ整理がしたいです。

    こんばんは この度、研究で膨大なデータをまとめたいのでawkを使おうと思っています。 元のファイルは約1万個あります。 ファイル名は R150km‐1020010001.txt から R150km‐1021800180.txt まであります。 102までは共通でそのあとの数字が変わります。 0010001...0010180 0020001 0020002...0020180.................1800180 といった形です。 中身は、 0 0 0 34 57 69 79 109 ....... といったように1行で8000列の数値データが入っています。 このファイルを下記のように1行目に0010001のファイルの中身、tabで区切って、2行目に0010002のファイルの中身といった形で一つのtxtにまとめたいです。 0 (tab) 0 (tab) 0 ... 34(tab) 28(tab) 36... 57(tab) 67(tab) 53... 69(tab) 78(tab) 72... 79(tab) 89(tab) 88... 109(tab) 99(tab)107 ... ... .... ... 可能でしょうか?ご回答お待ちしております。 よろしくお願いします。 awk初心者なので何か足りないところあったらすみません。

  • 「tar xvf」「tar zxvf」の違い

    「tar xvf」「tar zxvf」の違いが分かりません。 ・「hoge.tar」を展開するときは、「tar xvf」 ・「hoge.tar.gz」を展開するときは、「tar zxvf」 ということなのでしょうか? 「tar xvf」で、「hoge.tar.gz」は展開できないのでしょうか?

  • 【Ruby】テキスト置換を1ファイル完結にしたい

    memo.txtの中に含まれている"俺の飯"という文字列を"私のごはん"というふうに置換を行いたいのですが、 現在のやり方だとファイルを開いて1行ずつ読み込んで新しいファイルに文字列を書きだしており 読み込んだ際、置換対象の文字列があった場合に置換して書きだしておりますが このやり方だとどうしても新規ファイルを出力しなければいけません。 これを新規ファイルを作らずにmemo.txtの中身だけを書き換えるようにするには どのような処理にすれば良いのでしょうか? 何卒宜しくお願い致します。 ---- sample.rb require 'rubygems' open("memo.txt"){ |f| open("after_memo.txt","w"){ |o| while line = f.gets line.gsub!("俺の飯", "私のごはん") o.puts line end } } -- memo.txt 俺の飯はリーズナブル! 俺の飯美味しそう!

    • ベストアンサー
    • mail1
    • Ruby
    • 回答数2
  • コンパイラの構文解析(上向き)の習得

    コンパイラの仕組みについて興味があり勉強しています。 構文解析について下向きの再帰降下法についてはコンパイラの入門書などにも説明があり、簡単なものであれば自分でコードを書けるレベルになりました。 次にyaccなどに使用されているという上向きの構文解析法(LR/SLR/LALR等)を学びたいと思いましたが、良い資料が見つかりません。 具体的には理論の説明(集合の式等が理解しにくいです)だけではなくて、簡単な式などを評価するソースコードや実際の動作が解説されているものがあれば嬉しいです。 ネット上あるいは市販の3000円台程度の書籍で良いものがありましたらご紹介いただけると嬉しいです。 よろしくお願いします。

  • コンパイラの構文解析(上向き)の習得

    コンパイラの仕組みについて興味があり勉強しています。 構文解析について下向きの再帰降下法についてはコンパイラの入門書などにも説明があり、簡単なものであれば自分でコードを書けるレベルになりました。 次にyaccなどに使用されているという上向きの構文解析法(LR/SLR/LALR等)を学びたいと思いましたが、良い資料が見つかりません。 具体的には理論の説明(集合の式等が理解しにくいです)だけではなくて、簡単な式などを評価するソースコードや実際の動作が解説されているものがあれば嬉しいです。 ネット上あるいは市販の3000円台程度の書籍で良いものがありましたらご紹介いただけると嬉しいです。 よろしくお願いします。

  • linuxでaliasをbashrcに記載してsh

    linuxでaliasをbashrc(bashrcでなくともログイン時に読み込まれるprofile)に記載してあるコマンドを設定したいのですが、これが上手くいきません。 やりたいことは、bashrcで設定したコマンド内容をshスクリプトで実行したいのですが、これはどうやれば出来るのでしょうか? 以下に.bashrcの内容とshスクリプトの内容を記載します。 .bashrcの内容 # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias log='tail -f /var/log/messages' test01.shの内容 #! /bin/bash log 実行すると ./test01.sh: line 2: log: command not found となってしまいます。 ちなみに、shの中ではなく、ログイン後にコマンド(log)だけプロンプトに打つとちゃんとtail -f /var/log/messagesの内容が出力されます。 shの作りが悪いのでしょうか? どなたかご教授いただけますとありがたいです。 osはlinux redhat5.4です。 どうぞよろしくお願いいたします。