問題 正確な行数を維持しながら、任意の長さ(行数)のテキストをテンプレートに挿入する必要があります。sed:行番号制約付きの柔軟なテンプレート
サンプル・ソース・データ・ファイル:
You have a hold available for pickup as of 2012-01-13:
Title: Really Long Test Title Regarding Random Gibberish. Volume 1, A-B, United States
and affiliated territories, United Nations, countries of the world
Author: Barrel Roll Morton
Title: How to Compromise Free Speech Using Everyday Tools. Volume XXVI
Author: Lamar Smith
#end-of-record
You have a hold available for pickup as of 2012-01-13:
Title: Selling Out Democracy For Fun and Profit. Volume 1, A-B, United States
Author: Lamar Smith
Copy: 12
#end-of-record
(簡潔にするために簡略化)サンプルテンプレート:
<%CUST-NAME%>
<%CUST-ADDR%>
<%CUST-CTY-ZIP%>
<%TITLES GO HERE%>
<%STORE-NAME%>
<%STORE-ADDR%>
<%STORE-CTY-ZIP%>
この時点で私が使用してレコードでソースファイル レコードをロードするためにはbashの「マップファイル」を使用します/ ^#end-of-file/regex ...これまでのところとても良いです。 それから、私は各レコードの予測可能な側面を、それらが発生する行 に従って引いてから、一連のsed search replace文を使用して情報を処理します。
ハングアップ 問題が発生する可能性のある「タイトル」レコードの数が不明です。 未知数のタイトルに対応するにはどうすればよく、正確に65行の出力 が出力されますか? <% CUST-の間、
しかしsed -n '8,$p' test-match.txt
、私はこれが割り当てられたスペースの中に挿入することができますどのように、例:
は、タイトルのレコードは常に、8行目から始まる起こる私は簡単に タイトルを引き出すことができることを考えますCTY-ZIP%>と<%STORE-NAME%>をテンプレート内の適切な場所に保存しないでください。これまで私の考え:
例:
はを通じて顧客情報を送る-first。
sed 's/<%CUST-NAME%>/Benedict Arnold/' template.txt
- 追加タイトルレコード ???
-Then店/位置情報
sed 's/<%STORE-NAME%>/Smith's House of Greasy Palms/' template.txt
興味があれば、私はこのようなもののためのコードと機能を持っていますが、この記事では、それがあるとして「風」です。 ちょうど次のテキストの位置を維持し、65 *
UPDATE の総行数を維持しながら、タイトルレコードを挿入して助けを必要と私は戦術を変更することを決めました。私はその後、---顧客と店舗情報との間のすべての使用可能な回線用のテンプレートにプレースホルダを作成するつもりです:
- テストを行がソース
- にnullの場合yesの場合 - nullが去ると、プレースホルダを置き換えます行末。行番号は維持されます。
- nullでない場合は、テキストに置き換えて、テンプレートに行番号と行末を保持します。
最終的に、私はPerpleに関するTripleeの提案をもっと近くに見ていく予定です。 Perlのやり方は、私がこのプロジェクトに長時間取り掛かっていれば本当に簡単になり、維持しやすくなります。
パッディングやスクイーズについて質問していますか?物を絞る必要がある場合、私たちは何を削除することができますか?詰め物の場合、詰め物はどこに行きますか? 'sed'は算術演算ではあまり良くありませんが、awkでは出力が65行になるまで改行を追加するのは簡単です。 – tripleee
でもかまいません。パディングよりもタイトルが1つだけの場合... 5以上の場合は、一部を切り取る必要があります。 – Bubnoff
任意の数のタイトルエントリの下にあるものは、まったく同じ行になければなりません。そのため、行を数え、つまみをつけたり、フッターを予想通りに実行できるようにする必要があります。簡単な表示のための味わいのある改行 – Bubnoff