私は次のことをしたいと思います:
- 2つのタグ間のすべてのテキストを取得します。
someFile.txt
- テキストを次のように分割された配列に配置します。
\n
- 配列をアルファベット順に並べ替える
- 2つのタグ間のテキストを
someFile.txt
アルファベットバージョンに置き換えます。
someFile.txt
操作前:
// __MARKER__
../library/_shared/_shared/components/InfoPill/InfoPill.stories
../library/_shared/_shared/components/IconChevronRightBlack/IconChevronRightBlack.stories
../library/_shared/_shared/components/ButtonPrimary/ButtonPrimary.stories
// __MARKER__
someFile.txt
操作後:
// __MARKER__
../library/_shared/_shared/components/ButtonPrimary/ButtonPrimary.stories
../library/_shared/_shared/components/IconChevronRightBlack/IconChevronRightBlack.stories
../library/_shared/_shared/components/InfoPill/InfoPill.stories
// __MARKER__
答え1
大丈夫perl
で、ファイルがメモリ要件を満たすのに十分小さい場合
$ perl -0777 -pe 'BEGIN{$m = "// __MARKER__\n"}
s|$m\K.*?(?=\n$m)|join "\n", sort split/\n/,$&|gse' ip.txt
// __MARKER__
../library/_shared/_shared/components/ButtonPrimary/ButtonPrimary.stories
../library/_shared/_shared/components/IconChevronRightBlack/IconChevronRightBlack.stories
../library/_shared/_shared/components/InfoPill/InfoPill.stories
// __MARKER__
-0777
ファイル全体を文字列として読み込みます。$m = "// __MARKER__\n"
タグを変数に保存$m\K.*?(?=\n$m)
タグ間の文字列の取得join "\n", sort split/\n/,$&
キャプチャされた文字列を分割\n
してソートし、最後に配列要素を連結して単一の文字列を取得します。s
.
一致する修飾子を受け入れます。\n
e
セクションのコード置換を許可する修飾子-i
内部編集オプションの使用