나는 다음을 수행하고 싶습니다 :
- 두 태그 사이의 모든 텍스트를 가져옵니다.
someFile.txt
- 텍스트를 다음과 같이 분할된 배열에 넣습니다.
\n
- 배열을 알파벳순으로 정렬
- 두 태그 사이의 텍스트를
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
내부 편집 옵션 사용