- 締切済み
テキストファイル内の(から)の取り出し
テキストファイルの中の”(”から”)”までの中身をとりだしたい のですが言い方法が思いつきません。どのようにすればいいでしょうか? OSはSolarisまたはLinuxです。 ”(”の中は”(”が何重かネストしています。 手段は特に問わないのですが、今後のメンテを考慮すると awkかperlのスクリプトで実現できればありがたいでです。 イメージとしては ファイルAの中 文字列1( (・・) (・・) ) 文字列2( (・・) (・・) ) をA.文字列1、A.文字列2で出力できればと思います。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
No2です。 >どの部分が矛盾しているとおっしゃっているのでしょうか? なんと。書き間違いではないと? >テキストファイルの中の”(”から”)”までの中身をとりだしたい であれば、 文字列1( (・・) (・・) ) 文字列2( (・・) (・・) ) を入力とすれば、出力は ・・ ・・ ・・ ・・ です。 出力として欲しいものが、 A.文字列1 A.文字列2 であるなら、 ファイル名を前置して、テキストファイルの中の”(”から”)”までを削除したい または ファイル名を前置して、テキストファイルの中の”(”から”)”の外側をとりだしたい です。
- notnot
- ベストアンサー率47% (4900/10358)
前半の文章と後半の例が矛盾してますが、どちらが正しいのですか? どちらかが、書き間違いですね。正しい内容を補足してください。
補足
すいません。何かがうまく伝わっていないのだろうと思うのですが、どの部分が矛盾しているとおっしゃっているのでしょうか?申し訳ありませんが、具体的に教えていただけますか?
- ORUKA1951
- ベストアンサー率45% (5062/11036)
もう少し具体的なテキスト見本が必要です。 例文) テキストファイルの(中の(から)までの中身をとりだしたいのですが)言い方法が(思いつきません。)どのように(すればいいでしょうか?(OSは(Solaris)または(Linux))です。 結果) ( 中の ( から ) までの中身をとりだしたいのですが ) ( 言い方法が(思いつきません。 ) ( すればいいでしょうか? ( OSは ( Solaris ) または ( Linux ) ) です。 外側の()内にある()に含まれない文字はどうするのか?? 通常は、(が現れるたびにカウントを加算し、)が現れるたびに減算し、ゼロになった時点で配列なりハッシュを閉じるという形で進めていきます。 XMLやHTMLの解析と同じ手順を進めればよいです。その場合は(ではなく<document></document>の組で計算しますから、より複雑ですが・・
補足
具体的なイメージで言うと ファイルFの中が texta( aaa( Aaaa() ) bbb( Abbb() ) ) textb( ccc( Bccc() ) ddd( Bddd() ) ) ↓ の場合 F.textaが texta( aaa( Aaaa() ) bbb( Abbb() ) ) F.textbが textb( ccc( Bccc() ) ddd( Bddd() ) となってくれればありがたいということです。 無理でしょうか?
補足
なるほどわかりました。確かに私の説明不足ですね。 私が思っているのは"("の中にはいくつか()がネストしているケースがあるので、一番外の()の中をその中の()込みでA.文字列1、A.文字列2の様な形式で出力できればと 考えています。更にその中の()の中を取り出したければもう一度同じプログラムを取り出したものにかければ済むと思うので.. といった感じです。