キーで索引付けされた項目を含むファイルがあります。
\newglossaryentry{[alpha key]}
{
[some lines with arbitrary content]
}
2つの項目は1つ以上の行に分けることができます。キーに基づいてこれらのアイテムをどのようにソートできますか?追加の質問は、このパターンの正規表現は何ですか?
ありがとうございます。
ベストアンサー1
perl -0ne 'print join "\\", sort split(/^\\/m)' input.txt
これは以下に基づいています。行グループ別にファイルを並べ替える@αГsнιιでリンクされた答えです。
正規表現を区切り文字として使用して、入力ファイル全体を配列に分割します^\
。次に、配列要素が\
単一文字で連結された整列配列を印刷します。
\
分割操作中に削除された文字を書き戻すため、接続が必要です。
注:このスクリプトは、用語集で定義されている内容に全く関心を持ちません。それがすることは、入力をで始まる行に基づいて配列に分割することだけです\
。
これは入力ラインがある場合を意味します。今後最初の\newglossary
項目はソートされた順序で印刷されます(配列要素0になります)。そのような行がなければ、配列要素0は空で最初に印刷されますが(空の文字列が他のものよりも先にソートされるため)、目に見える出力は生成されません(空であるため)。
テキスト行がある場合後ろに最後の\newglossary
項目は、項目がどこに配置されているかに関係なく、スクリプトから印刷されると思われるので印刷されます。このアイテムの一部。
2つの項目の間にランダムなテキストがある場合でも、同じことが発生します。その行は、2つの項目のうち最初の項目の一部になります。