- ベストアンサー
UNIXでのテキスト文挿入プログラムについて
- UNIX上のテキストファイルに特定のテキストを挿入する方法が知りたいです。
- テキストファイル内の特定の箇所にテキストを挿入するための効果的な方法を教えてください。
- UNIX上のテキストファイルにおいて、特定のテキストの塊の直後にテキストを挿入する方法についてアドバイスをいただけますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
動作は未確認ですが、 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)残りの行を読み飛ばす。
その他の回答 (2)
- trapezium
- ベストアンサー率62% (276/442)
?keyword? /)/r insert.txt wq という内容で cmd.ed としておいて ed file < cmd.ed というのはどうでしょう。
- m1091757253
- ベストアンサー率45% (9/20)
次の操作をエディタのキーボードマクロに登録して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)))
お礼
なるほど、こういった方法があるのですね。さんこうになりました。 ありがとうございます。