ファイルの一部をアルファベット順にソートする方法は?

ファイルの一部をアルファベット順にソートする方法は?

いくつかの部分で構成されたファイルがあります。各部分は特定のタイトルで始まりますが、すべての部分は同じ文字列で終わります。各部分の内容を並べ替えることなく、タイトルに基づいてファイル部分を並べ替えたいのです(例:セクション全体の処理など)。 1つのブロックで)入力するかどうかのアイデアを明確にするために、2つのセクションの間に空白行もあります。

string5
z
y
x
string

string2
x
z
y
f
string

希望の出力は次のとおりです。

string2
x
z
y
f
string

string5
z
y
x
string

ベストアンサー1

GNUを使用しsedて、次の操作を行いますsort

sed 's/^$/\x0/g' file | sort -z | tr '\0' '\n'
  • 空白行に空白文字を入れる
  • sortnull 文字を区切り文字として使用( -z)
  • 最後に、空の区切り文字を新しい行に置き換えますtr
  • 出力の最初の行と最後の行から空の行を削除するには、次のように追加します。| sed '1{/^$/d};${/^$/d}'

出力:

string2
x
z
y
f
string

string5
z
y
x
string

(誰かが\x0GNU以外の作業に役立つ可能性がありますsed関連質問)

おすすめ記事