이 질문을 한 것으로 알고 있지만 유효한 답변을 얻지 못했습니다. 그럼 누구든지 내 질문에 대답할 수 있나요?
각 단락이 빈 줄로 구분된 텍스트 단락이 포함된 텍스트 파일이 있습니다. 이제 각 단락에 고유한 번호를 매겨야 합니다. 따라서 첫 번째 문단의 여백에는 숫자 1이 있고, 두 번째 문단의 여백에는 숫자 2가 있으며, 세 번째 문단의 여백에는 숫자 3이 있습니다. 이것이 당연해 보인다는 것을 알지만, 지난번 포스팅이 메시지를 명확하게 전달하지 못했을 수도 있다고 생각합니다.
그래서 이 작업을 수행할 수 있는 Linux 명령이 필요합니다. 하지만 문제는 명령이 단순해야 한다는 것입니다. 내 말은 복잡한 Perl 스크립트나 모호한 코드 블록이 없다는 것입니다.
내가 찾고 있는 것은 작업을 쉽게 수행할 수 있는 간단한 명령입니다. 또는 스크립트를 작성해야 하는 경우 Perl 또는 Bash 스크립팅을 사용해 본 적이 없는 사람도 스크립트를 코드에 적용하고 수행 중인 작업을 이해할 수 있도록 간단하게 유지하고 코드를 설명하십시오.
이 질문이 무례하게 들릴 수 있다면 죄송합니다. 이 주제에 관해 온라인에는 아무것도 없기 때문에 답변해 주시면 매우 감사하겠습니다.
답변1
모두에서 얻었습니다.https://superuser.com/a/916248/151431
당신은 그것을 사용할 수 있습니다perl
$ perl -00pe 's/^/$./' file
-00
"줄"이 연속적인 \n\n으로 정의되는 단락 모드를 켭니다.-p
에 의해 제공된 스크립트를 실행한 후 입력 파일의 각 행을 인쇄하도록 Perl에 지시합니다-e
.s/^/$./
(^)
줄의 시작 부분을 현재 "줄"(단락) 번호로 바꿉니다.$.
당신은 그것을 사용할 수 있습니다awk
$ awk -v RS='\n\n' -vORS='\n\n' '{print NR$0}' file | head -n -2
-v RS='\n\n'
awk의 레코드 구분 기호를 연속된 개행 문자로 설정합니다. Perl의 단락 모드와 마찬가지로 이는 단락을 "줄"로 처리합니다. 그런 다음 현재 줄 번호(NR)
와 현재 "줄"을 인쇄하도록 지시합니다$0
.-vORS=
출력 레코드 구분 기호를 연속적인 개행 문자로 설정하여 출력에서도 단락이 빈 줄로 구분되도록 합니다.head -n -2
출력 끝에 두 개의 빈 줄을 추가하는 것을 방지합니다.