区切り記号の並べ替え:中かっこと角かっこ

区切り記号の並べ替え:中かっこと角かっこ

このコマンドを使用しています

cat acronyms.tex | sort -t{ -k1

次のように文字列形式でファイルを並べ替えます。

\newacronym{ex}{EX}{Expanded}

最初の中かっこペアの内容に基づいてソートしたいと思います。ただし、一部の行は次のとおりです。

\newacronym[a string]{ex2}{EX2}

私が使用しているコマンドは、2番目の文字列が最初の文字列の前に来るという点で合計と結果を{区別することはできません。[

[とどのように区別できますか{

ベストアンサー1

何らかの理由でソートする必要がある場合ただ最初の中かっこペアの内容を扱う最も簡単な方法は、おそらく次のものを使用することです。装飾 - 並べ替え - キャンセル装飾モード。使いたいsedそしてcutただし、シェルでこの機能を実装するにはいくつかのオプションがあります。

sed -e 's/^\([^{]*{\([^}]*\)}\)/\2 \1/' < data|sort|cut -d' ' -f2-

このsedコマンドはまですべて終わり最初の校正器のペア中かっこ、スペース、元の文字列の内容が含まれます。いつものように並べ替えることができます。その後、cut最初に追加したフィールドをリセットしました。

これは奇数文字とキーの不均等な長さをうまく処理しますが、空白が問題になり、エスケープも問題に\}なります。必要に応じて別の区切り記号を使用してください。


データが次の場合:

\newacronym{A}{EX}{Expanded}
\newacronym{F}{EX}{Expanded}
\newacronym{D}{EX}{Expanded}
\newacronym{C}{EX}{Expanded}
\newacronym[abc]{B}{EX}{Expanded}
\newacronym{CD}{EX}{Expanded}
\newacronym[def]{E}{EX}{Expanded}

その後、sedコマンドの結果は次のようになります。

A \newacronym{A}{EX}{Expanded}
F \newacronym{F}{EX}{Expanded}
D \newacronym{D}{EX}{Expanded}
C \newacronym{C}{EX}{Expanded}
B \newacronym[abc]{B}{EX}{Expanded}
CD \newacronym{CD}{EX}{Expanded}
E \newacronym[def]{E}{EX}{Expanded}

残りは簡単です。

おすすめ記事