いくつかの部分で構成されたファイルがあります。各部分は特定のタイトルで始まりますが、すべての部分は同じ文字列で終わります。各部分の内容を並べ替えることなく、タイトルに基づいてファイル部分を並べ替えたいのです(例:セクション全体の処理など)。 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'
- 空白行に空白文字を入れる
sort
null 文字を区切り文字として使用(-z
)- 最後に、空の区切り文字を新しい行に置き換えます
tr
。 - 出力の最初の行と最後の行から空の行を削除するには、次のように追加します。
| sed '1{/^$/d};${/^$/d}'
出力:
string2
x
z
y
f
string
string5
z
y
x
string
(誰かが\x0
GNU以外の作業に役立つ可能性がありますsed
。関連質問)