2 つのパターンに一致する行を正常に出力する sed コマンドがあります。
sed -n '/PAGE 2/,/\x0c/p' filename.txt
私が理解していないのは、最初のトークンから2番目のトークンまでのすべての行を印刷したいということです。トークンは大きなフラット ファイルのレコード セパレータであり、その\x0c
行をそのままにしておく必要があります。
2 つのトークンの間では、データは完全に可変であり、信頼できるアンカーがありません。
[明確化] 現時点では、/PAGE 2/
と を/\x0c/
含むすべての行が出力されます。次のレコード /PAGE 2/
まで印刷したい。/\x0c/
[テストデータ]/x0c
は、このレコードの最初の行の先頭と最後の行の先頭になります。
次のレコードの開始直前の行まで、レコードの最初の行を削除する必要があります。
^L20-SEP-2006 01:54:08 PM Foobars College PAGE 2
TERM: 200610 Student Billing Statement SUMDATA
99999
Foo bar R0000000
999 Geese Rural Drive DUE: 15-OCT-2012
Columbus, NE 90210
--------------------------------------------------------------------------------
Balance equal to or greater than $5000.00 $200.00
Billing inquiries may be directed to 444/555-1212 or by
email to bursar@foobar.edu. Financial Aid inquiries should
be directed to 444/555-1212 or finaid@foobar.edu.
^L20-SEP-2006 01:54:08 PM Foobars College PAGE 1
[期待される結果]
^L20-SEP-2006 01:54:08 PM Foobars College PAGE 1
ファイルにはそのようなレコードが複数あります。/PAGE 2/
私はトークンとトークンだけに頼ることができ/x0c/
ます。
[解決]:
Choruba の指示に従って、私は彼のコマンドを次のように編集しました。
sed '/PAGE [2-9]/,/\x0c/{/\x0c$/!d}'
中括弧内の規則は、 a を含むすべての行に適用され、^L
それらを選択的に無視していました。