◀一般トップへ
  • 5524 CSV形式ファイルのフィールド数(30個)が多い時,簡単な正規表現の方法はありますか?
    • 5531 Re:CSV形式ファイルのフィールド数(30個)が多い時,簡単な正規表現の方法はありますか?
      • 5532 Re2:CSV形式ファイルのフィールド数(30個)が多い時,簡単な正規表現の方法はありますか?
        • 5538 できました。ありがとうございました。
          • 5541 Re:できました。ありがとうございました。
          • 5550 Re:できました。ありがとうございました。
  • [5524] CSV形式ファイルのフィールド数(30個)が多い時,簡単な正規表現の方法はありますか? ろろ 2006年10月26日 18:08

    >[5500] Re:CSV形式ファイルのフィールドのデータの交換を,正規表現の置換でできますか。
    > 置換前(.*?):(.*?):(.*?):(.*?):(.*?):(.*)\r ----->
    > 置換後\1:\2:\5:\4:\3:\6\r ----->
    30個並べるしかありませんか?
    Perl one liner 集 perl 1行野郎(http://sonic64.com/2003-06-04.html)を
    参考にしましたが,「置換」,「外部コマンド実行」ともうまくいきませんでした。
    [部分的な取り出し]スペースで区切られたフィールドの最初から4番目までと6番目を表示
    perl -lane 'print "@F[0..4] $F[6]"' file
    Q1.perlのsplitを理解した方がいいですか?
    Q2.簡単な置換の表現方法があれば教えてください。よろしくお願いします。
    • [5531] Re:CSV形式ファイルのフィールド数(30個)が多い時,簡単な正規表現の方法はありますか? (全略) 2006年10月28日 13:36

      ▼ ろろさん
      > Q1.perlのsplitを理解した方がいいですか?
      sed、awk、perl、エディタ、Excelなど用途に分けて使い分けるのがイイと思います^-^

      > Q2.簡単な置換の表現方法があれば教えてください。よろしくお願いします。
      置き換える項目が先頭や末尾でなければ↓な感じかな

      例) 6コめと9コめを入れ替え、区切りはカンマ
      s/(([^,]*,){5})([^,]*,)(([^,]*,){2})([^,]
      *,)(.*)/$1$6$4$3$7/

      できんくはないですね
      でもperlやExcel使った方がいいと思います
      • [5532] Re2:CSV形式ファイルのフィールド数(30個)が多い時,簡単な正規表現の方法はありますか? じゅうじ 2006年10月28日 21:04

        ▼ (全略)さん
        > 置き換える項目が先頭や末尾でなければ↓な感じかな
        > 例) 6コめと9コめを入れ替え、区切りはカンマ
        先頭でも、n=1で問題ないです。

        {n,m:n<m}
        検索文字列
        (([^,]*,){5})([^,]*,)(([^,]*,){2})([^,]*,)(.*)
        n-1 m-(n+1)
        置換文字列
        $1$6$4$3$7
        いつでも、または\1\6\4\3\7

        $1=1,2,3,4,5,
        $2=5, <--捨て
        $3=6,
        $4=7,8,
        $5=8, <--捨て
        $6=9,
        $7=10,....\r\n
        • [5538] できました。ありがとうございました。 ろろ 2006年10月30日 19:35

          ▼ じゅうじさん
          > $2=5, <--捨て
          perlmanでみつけることができませんでした。
          探し方と,どこをみたらいいか教えてください。
          よろしくお願いします。
          • [5541] Re:できました。ありがとうございました。 じゅうじ 2006年10月30日 21:42

            ▼ ろろさん
            > ▼ じゅうじさん
            > > $2=5, <--捨て
            > perlmanでみつけることができませんでした。
            > 探し方と,どこをみたらいいか教えてください。
            > よろしくお願いします。

            $2と$5は、使っていませんが、変数に$1と$4の最後の内容が入っています。
          • [5550] Re:できました。ありがとうございました。 じゅうじ 2006年11月01日 06:12

            ▼ ろろさん
            > > $2=5, <--捨て
            > perlmanでみつけることができませんでした。
            > 探し方と,どこをみたらいいか教えてください。
            > よろしくお願いします。

            (N)→((?:[^,]*,){5})([^,]*,)((?:[^,]*,){2})([^,]*,)(.*)
            (P)→$1$4$3$2$5

            perlmanのURLです。
            この、5 pageあたりに,捨てないで良い方法が書いて有りました。
            http://www.ie.u-ryukyu.ac.jp/~kono/perlman/cat1/perlre.html

            もう,この辺通り過ぎてるのかな.