複数行式の並べ替え [重複]

複数行式の並べ替え [重複]

キーで索引付けされた項目を含むファイルがあります。

\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つの項目のうち最初の項目の一部になります。

おすすめ記事