次のようにプレーンテキストファイルの一部をコピーする必要があります。
テキストファイルは、次の形式の一連の「ページ」で構成されています。
<page [lots of lines of text] /page>
<page [lots of lines of text] /page>
<page [lots of lines of text] /page>
<page [lots of lines of text] /page>
3番目の「ページ」をコピーする自動方法が必要です。見つけることができるショートカットがありますか? (同様に「3rd」を「23rd」に変えるなど)
理想的には、ファイルを解凍し、結果のテキストファイルにコピーして再圧縮するbashスクリプトが必要です。これの目的は、xournalにページをコピーさせることです。
答え1
これには実際のタグパーサーを使用する必要がありますが、少なくともフォーマット記述を次のように解釈する必要があります。
<page line one
line two /page>
<page line three
line four /page>
<page line five
line six /page>
クイックawk
ソリューション1が許可されている場合は、これを行うことができます。
awk -v pagenum=2 'BEGIN {RS="/page>"; ORS=RS} FNR==pagenum {print} 1' file
またはそれほど不思議ではありません。
awk -v pagenum=2 'BEGIN {RS="/page>"; ORS=RS}; FNR==pagenum {print}; {print}' file
ここでコピーしたいページ番号はシェルの引数として渡されます-v pagenum=
。
最後のタグの後に「stuff」がある場合、上記/page>
の式はそれを不完全なレコードとして扱い、偽の最終/page>
レコード区切り文字を追加できます。この場合、次の修正された式がよりうまく機能する可能性があります。
awk -v pagenum=2 'BEGIN {RS="/page>"; ORS=""; OFS=""} FNR==pagenum {print $0,RT} {print $0,RT}' file
gawk
3.1.8および3.3でmawk
テストされています。