• ベストアンサー

Perlについて教えてください!

入力ファイルには AAA␣aaa␣AaAa 改行 BBB␣bAb␣BbBb 改行 CCC␣Abc␣CcCc 改行 DDD␣.... というように文字列がスペースおきに3つ記載されていて最後は改行されている文が複数行ある場合、 文の2つ目のaaa、bAb、Abc…のみを配列に格納したい場合のプログラムを教えてください。

  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

␣はスペースということですね? #!/usr/bin/env perl my @array1; my @array2; while(<DATA>) {   # WAY1: use regexp   my ($str) = $_ =~ /^.+?\s(.+?)\s.+$/msx;   push(@array1, $str);      # WAY2: use split   my @columns = split(' ', $_);   push(@array2, $columns[1]); } print "$_\n" foreach @array1; print "$_\n" foreach @array2; __DATA__ AAA aaa AaAa BBB bAb BbBb CCC Abc CcCc

wiredrikou
質問者

お礼

丁寧に回答して頂きありがとうございました。

その他の回答 (1)

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

open my $fh, '<', 'inputfile.txt'; my @data = map { (split)[1] } <$fh>; close $fh;

関連するQ&A

  • Movable Type(ムーバブルタイプ)でカテゴリの順番の入れ替えについて

    Movable Type 3.2-ja-2を使用しております。 親カテゴリーの移動をしたいのですが以下のような カテゴリーがあって AAA  aaaa BBB  bbbb CCC  cccc このカテゴリーを CCC  cccc AAA  aaaa BBB  bbbb このようにしたいのですが何か方法はあるのでしょうか?

  • Perl言語でファイル入出力プログラムについて

    Perlでファイル入出力のプログラムをコーディングしたいのですが、いまいちハッシュが理解しずらく困っています。わかる方よろしくお願いします。 moto.pl の中にあらかじめ AAA aaa AaAa AAaa BBB bbb BbBb BBbb CCC ccc CcCc CCcc AAA aaa AaAa AAaa .... というように一行ずつ文字列があり、この場合では最初の大文字AAAが二つあるので、その結果を例えばsaki.plに AAA 2 ... というように出力するプログラムを教えて頂けませんか?

    • ベストアンサー
    • Perl
  • awkやsed等で特定の文字間を抜き出す

    cat text aaaa bbbb <AAA> ccc ddd <BBB> eee とあるときに <AAA> ccc ddd <BBB> だけ抜き出したいです。 どのようにすればよいでしょうか?

  • リネームソフトを探しています

    次のような機能のあるリネームソフトを探しております。 1.フォルダ内のファイル名とファイル内の文字列を入れ替える。 (リネーム対象のファイルのファイル名の一部とファイル内の文字列はユニークに 特定出来る。) 例) ファイル名 aaaa bbbb cccc ファイル内の文字列 aaaa1234 bbbb5678 cccc9abc リネーム後のファイル名 aaa1234 bbb5678 ccc9abc この様なリネームが行えるソフトウェアはあるでしょうか? 環境はWindowsXPです

  • Perlでのの抜き出し方法

    入力ファイルには AAA␣aaa␣AaAa というように文字列がスペースおきに3つ記載されている文が1行ある場合、 文の2つ目のaaaのみを変数に格納したい場合のプログラムを教えてください。 ␣は空文字です

    • ベストアンサー
    • Perl
  • 【超初歩】配列に格納した文字列を書き出すには?

    配列である、$arrMyString[] に、 aaa@example.com bbb@example.com ccc@example.com ddd@example.com eee@example.com といった5種類の文字列が格納されているとします。 これを、半角カンマ+半角スペースでつないで書き出す(echo)にはどのような方法がありますか。 なお、最後の文字列の後ろには不要です。 ■書き出しイメージ aaa@example.com, bbb@example.com, ccc@example.com, ddd@example.com, eee@example.com

    • ベストアンサー
    • PHP
  • 文字変換で,を改行されないようにしたい

    下記のスクリプトでファイルから読み込んだ行毎の文字列<>を'=>'に変換後、行の先頭に'を付け足し行の最後に',を付け加えた場合、変な風に改行されてしまいます。 $ cat list1.txt 01<>ああああ 01_01<>あAAA 01_02<>あBBB 01_03<>あCCC 01_04<>あDDD 02<>いいいい 02_01<>いAAA 02_02<>いBBB 02_03<>いCCC 02_04<>いDDD open(IN, "<list1.txt"); @datas = <IN>; close(IN); open(OUT, ">date.txt"); foreach (@datas) { ($a, $b) = split(/<>/, $_); print OUT "'$a'=>'$b',"; } close(OUT); 実行結果 $ cat date.txt '01'=>'ああああ ','01_01'=>'あAAA ','01_02'=>'あBBB ','01_03'=>'あCCC ','01_04'=>'あDDD ','02'=>'いいいい ','02_01'=>'いAAA ','02_02'=>'いBBB ','02_03'=>'いCCC ','02_04'=>'いDDD ', これを下記のように整形するにはスクリプトのどこを直せばよいのでしょうか。 '01'=>'ああああ', '01_01'=>'あAAA', '01_02'=>'あBBB', '01_03'=>'あCCC', '01_04'=>'あDDD', '02'=>'いいいい', '02_01'=>'いAAA', '02_02'=>'いBBB', '02_03'=>'いCCC', '02_04'=>'いDDD', どなたかご教授お願い致します。(上記のスクリプト以外の方法で スマートなやり方などありましたらあわせてご教授頂けますと助かります。)

    • ベストアンサー
    • Perl
  • 配列の値を一行あけて出力

    配列の値を一行あけて出力したいのですが、うまくいきません。 ご教授お願いいたします。 <shell> #!/bin/bash ARRAY=("aaaa" "bbbb" "cccc") IFS=$'¥n'$'¥n' echo "${ARRAY[*]}" <現在の出力> aaaa bbbb cccc <期待する出力> aaaa bbbb cccc

  • Perlの正規表現について

    Perlの正規表現について質問です. ■質問 aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd eee" aaa bbb ccc ddd eee "fff ggg hhh iii" というような,文字列が書かれているファイルがあるとします. ※ダブルクォーテーションが無い行もあります. ※ダブルクォーテーション内のスペースの数は,行によってそれぞれ異なります. これを,ダブルクォーテーションの中にあるスペースだけ アンダーバーに置換する場合の正規表現を教えて下さい. つまり,下記の出力にしたいです. aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd_eee" aaa bbb ccc ddd eee "fff_ggg_hhh_iii" ■条件 ※ちょっと古いPerlでも動くよう,ゼロ幅肯定/否定後読((?<),(!<))は使わないでください. ※単に実現するだけなら, # cat inputfile | print -pe 'sub f(){}(shift;s/ /_/;return $_;); s/(\".*\")/&f($1)/e;' みたいな感じで置換できそうですが,「正規表現だけで簡単に書けるかどうか」が知りたいのです(正規表現だけで実現出来る場合,そのアルゴリズムを知りたいです).そのため,関数と/eオプションは使わないでください.

    • ベストアンサー
    • Perl
  • シェルスクリプトについて

    シェルスクリプトについて Linuxで先頭にスペースが入っている行をひとつ上の行につなげたいと考えています。 その場合、シェルスクリプトはどのように書けばよいかご教示願います。 【ファイル内容】 aaa △bbb ccc ddd (b行の先頭のみスペース(△)が入っています。) 【変換後のファイル】 aaa bbb ccc ddd

専門家に質問してみよう