UNIXでのテキスト文挿入プログラムについて

このQ&Aのポイント
  • UNIX上のテキストファイルに特定のテキストを挿入する方法が知りたいです。
  • テキストファイル内の特定の箇所にテキストを挿入するための効果的な方法を教えてください。
  • UNIX上のテキストファイルにおいて、特定のテキストの塊の直後にテキストを挿入する方法についてアドバイスをいただけますか?
回答を見る
  • ベストアンサー

unixでのテキスト文挿入プログラムについて

UNIX上のテキストファイルの特定の箇所に特定のテキストのかたまりを挿入したいのですがいい方法が思いつきません。 以下に具体例をしめします。以下の様なテキスト文書があります。Keyword(・・)が一塊でテキスト内にいくつか繰り返しでてきます。 数は不定です。そのkeyword(・・)の一番最後の塊が終わった直後にテキスト文を挿入したいです。 挿入するテキスト文は用意しているkeyword(・・)文の塊です。(挿入するkeyword(・・)文と既存のテキスト文にでてくる keyword(・・)文の内容は全く別内容です。 テキスト文例 : 前置き文 keyword( : 設定文A ) keyword( : 設定文B ) keyword( : 設定文C ) keyword( : 設定文D ) : 後処理文

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

  • ベストアンサー
回答No.2

動作は未確認ですが、 cat 既存のテキストファイル名 | awk \ 'BEGIN { kw=0 } { if (substr($0,1,length("keyword("))=="keyword(") kw=1 if (kw==0 || kw==1) { print $0 } else if (kw==2) { cmd=sprintf("cat %s",挿入するテキストファイル名) system(cmd) print $0 kw=3 } else { print $0 } if (substr($0,1,1)==")") kw=2 } END {}' > 新規のテキストファイル名 といった感じでは。 仕様は例題で示すべきではありません。例題は補足説明にしましょう。 上記のスクリプトは以下の仕様を満たすはずです(たぶん)。 既存のテキストファイルに対して以下の処理を実行します。 (1)"keyword("までの行を読み飛ばす。 (2)"keyword("から")"までの行を読み飛ばす。これは連続して発生することがある。 (3)上記の(2)を満たさなくなった時、別途用意したテキスト文を挿入する。 (4)残りの行を読み飛ばす。

Kasaoka-Taroh
質問者

お礼

なるほど、こういった方法があるのですね。さんこうになりました。 ありがとうございます。

その他の回答 (2)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.3

?keyword? /)/r insert.txt wq という内容で cmd.ed としておいて ed file < cmd.ed というのはどうでしょう。

回答No.1

次の操作をエディタのキーボードマクロに登録して10,000回くらいマクロを繰り返させる 1. keywordの所までジャンプ 2. カーソルを括弧まで進める 3. 対応する括弧にジャンプ 4. カーソルを進めて改行を入れる 5. 貼り付け実行 あるいは以下を"適_切_な"物に与える (while t (progn (search-forward "keyword") (search-forward "(") (backward-char 1) (forward-list) (insert-char #x0a) (yank)))

関連するQ&A

  • word2003でテキストボックスを挿入すると文が目茶目茶になります助けてください

    はじめましてMt_loveと申します。 今回が初めての投稿なので至らぬ点もあるかと思いますがよろしくお願いします。 質問内容は 今卒業論文の製作でword2003を使用して段落2行の文章を作って いるのですが図を挿入する再に図の説明などを入れるために 図表番号ではなくテキストボックスの中に画像と説明文を打ち込み 文章の中へ挿入してレイアウトを作成しています。 ところが、先に出来た図を挿入し後から文を打ち込んでいると 先に固定したテキストボックスが動き文章のレイアウトを めちゃくちゃにしてしまいます。 (たとえば1ページに一行だけとか他の図表と3つくらい重なったり) また、テキストボックスは書式設定で外周にしたり、 アンカーを「配置」で「余白」に打っているにもかかわらず レイアウトが崩れたりテキストボックスの裏側に 文字が入ってしまい困っています。 いろいろインターネットや本を見ましたが分かりませんでした どなたか解決方法を御存知の方はお知恵をお貸しください。 お願いいたします。

  • unixでの文字列置換方法

    UNIX上のテキストファイル内の以下で以下の様な置換をおこないたいのですが いい方法が思いつきません。どなたか教えて下さい。 cj = 5.0e-12   ↓ cj = 0 ”cj”の部分は特定のキーワードが入ります。方法は特に問いません。 awkかsedあたりでできるとメンテナンスもやりやすいのでいいかなという程度です。

  • UNIXで、とあるテキストに対して2文字区切りで改行をいれるには?

    UNIXのシェルスクリプトで、このような動作ができないものかどうか考えています。 あるテキストファイルの内容を、2文字ごとに区切って改行を入れるように加工する 例えば file1.txt が以下のような内容であれば --file1.txt-- 000092 027301 01 0263000001 2文字ずつ区切って改行を挿入したファイル --file2.txt-- 00 00 92 02 73 01 01 02 63 00 00 01 を生成したいと思います。 ここで元のファイルは必ず、半角の数字のみで構成されており、 1行の文字数は最低2文字以上あり、なおかつ奇数個の文字列は存在しないものとします。 awk や grep や sed を組みあわせて考えているのですが、 なかなか解決に至りません。 どなたかお知恵を拝借願います。

  • 大容量のテキストファイルの内容を解析について

    10000行1GBほどの大容量のテキストファイルの内容を解析しようとしています。 このテキストファイルは約20行で一塊のデータが入っており、次の20行からまた一塊のデータがはいっています。現在、全行を1行ごとにArrayListに格納してから 各行にキーワードが含まれていないかチェックし、含まれていたらそのデータの塊の中にある2行目を行を出力しようとしています。 しかし、10000行のArrayListを宣言しようとしたところ、途中でOutOfMemoryになり、メモリ不足になります。そこで、最初の20行を読み込み、処理をし、次の20行を読み込み処理をする・・・と考えているのですが、このようなことをJAVAのソースコードで実現することは可能でしょうか?? 皆さんは大容量ファイルを解析するときにどのような手法をとっていますか? ご教示いただければ幸いです。

    • ベストアンサー
    • Java
  • WORD VBA 特定文字色の前後にテキスト挿入

    WORD文章中の特定の文字色が設定されている部分を探して、 その部分の前と後にテキストを挿入したいです。 例)  (1) 文章中の赤字で書かれている言葉を検索  (2) その言葉の前に「赤字」、後ろに「赤字終わり」というテキストを挿入 Word VBAで可能でしょうか。よろしくお願いします。

  • イラレ10でテキスト文を3段に分ける方法

    イラレ10で長いテキスト文を3段に分ける方法をお教えください。以下で「段数」が表示されません。 [ウインドウMenu]―[文字]―[段落設定]―[段落設定パレット]

  • UNIX シェルスクリプト

    UNIXのシェルスクリプトを使用してテキストファイルのある列にある 特定の文字列を条件としてその行を出力するということをやりたいのですが どのようにすればできるでしょうか? 例えば,以下のようなテキストファイルがあって,2列目がYAHOOの行を 主力したいというようなことです。 AAA SOFTBANK BBB YAHOO YAHOO TEST CCC QUICK DDD YAHOO ↓ BBB YAHOO DDD YAHOO

  • outlook内の挿入テキストページ

    質問したつもりが、その痕跡が見当たりませんので、もしかしたら重複投稿になっているかもしれません。outlookメール文面を作成するとき、一部内容を強調するため、テキストボックスを挿入し、その中に文章を書き込みますと、以下のようになってしまいます。例えば、 あかさたな と入れますと あkあsたnあ となってしまいます。テキストボックスを入れること自体が無理であるのか、あるいは解決方法があるのかを是非お教えください。パソコンメーカーに問い合わせを(有料)をしましたら、我関せず・・よそで解決をと言われ、困っています。よろしくお願いいたします。

  • エクセルを使い文章の挿入することに関する質問です。

    エクセルを使い文章の挿入することに関する質問です。 列全体にある文に、書き換えることをせず新たに既存の文とは別の 内容は同じ文章を列全体に加えたいのですが、どのようにすればよろしいでしょうか? 基本的なことかもしれませんが宜しくお願い致します。

  • 簡単なテキスト処理について

    お世話になります。 現在プログラミングの勉強のために、単純なテキスト処理を行うためのプログラムを作ろうと考えています。 内容は・・・・・・・・ テキストデータ #################### 定型文 #################### テキストデータ #################### 定型文 #################### 以下繰り返し という内容のテキストファイルから定型文の所だけを抜き出して 新たなファイルを作るというものです。 (定型文の内容は毎回ほぼ同じ) つまり #################### 定型文 #################### #################### 定型文 #################### 以下繰り返し という内容のテキストファイルを作りたいのです。 一応大まかな流れとしては次のように考えています。 (1)読み込みモードでファイルを開く。 (2)ファイルを全て読む。 (3)ファイルを閉じる。 (4)同ファイル名で書き込みモードで開く(新規) (5)必要な分だけを書き出す。 しかし具体的にどうするかというのがわかりません。 (バッチファイルで出来ないかとも考えてみたのですが・・・・) 宜しければアドバイスを頂きたく思います。 よろしくお願いいたします。

専門家に質問してみよう