Bash는 파일을 여러 줄로 분할합니다.

Bash는 파일을 여러 줄로 분할합니다.

여러 줄로 구성된 거대한 .txt 파일이 있는데 한 줄에 여러 줄을 서로 구분하는 특정 문자열이 있습니다.

해당 문자열을 사용하여 현재 문자열이라는 이름의 여러 파일로 분할하고 싶습니다.

특정 문자열 예:

 Found matches in (anything can be here):

거대한 .txt 데이터의 예:

 Found matches in (anything can be here):
 ..............
 ..............
 ..............
 ..............
 ..............
 ..............

 Found matches in EXAMPLE:
 ..............
 ..............
 ..............
 ..............
 ..............
 ..............

원하는 출력:

 Found matches in (anything can be here).txt < contains data below its self but before another line stating " Found matches in

 Found matches in EXAMPLE.txt < contains data below its self but before another line stating " Found matches in

또한 데이터가 있는 "(여기에 무엇이든 있을 수 있음)" 행에서 중복된 일치 항목이 있을 수 있으므로 현재 행을 덮어쓰는 대신 (1), (2), (3) 등의 이름을 바꿀 수 있습니까? 아니면 간단히 rename 현재 파일도 추가합니다(덮어쓰지 않음).

답변1

얼마나 멀리 갈 것인가?

awk '/^ *Found matches/ {FN = $0 ".txt"; next} {print >> FN}' file

이해합니다?

편집하다: 수정된 버전("일치하는 항목을 찾았습니다."아니요첫 번째 줄에):

awk '/^ *Found matches/ {if (FN) close (FN); FN = $0 ".txt"; next} FN {print >> FN}' file

답변2

솔직히 저는 bash를 처음 접했고 어디서부터 시작해야 할지조차 모릅니다. 죄송합니다. 이곳이 학습을 위한 곳이라는 것은 알지만 어떤 방향이든 도움이 될 것입니다.

모른다고 사과할 필요는 없습니다. 스크립팅을 잘하도록 태어나는 사람은 없습니다.

하지만 현재 문제의 경우에는 "X와 Y를 해결하는 스크립트를 작성해 주세요"만큼 도움을 요청하는 것이 아닙니다.

이(그리고 대부분의 다른) GNU/Linux 커뮤니티는 일반적으로 이러한 문제에 대해 눈살을 찌푸립니다.

그러나 당면한 질문으로 돌아갑니다. 사실, 어디서부터 시작해야 할지조차 모릅니다. 몇 년 전 저는 이렇게 시작했습니다.

  • 나는 읽었다이 가이드(그리고 모든 연습을 했어요)
  • 그럼 난 읽어이 가이드(그리고 모든 연습을 했어요)
  • 나는 그것을 샀다이 책. 대부분의 연습문제를 읽고 완료하세요.
  • 커뮤니티에 참여했습니다(처음에는 관찰자로).

제가 취한 가장 중요하고 유용한 단계는사용된GNU/리눅스모든 것. 의미: GNU/Linux는 나의 유일한 운영 체제가 되었고, 이로 인해 내가 직면한 문제를 해결하기 위해 필요한 기술을 사용하거나 새로운 기술을 배우도록 강요받았습니다*. 후자에 직면했을 때 나는 종종 커뮤니티에 도움을 요청합니다. 커뮤니티는 나에게 좋은 질문을 하는 방법을 가르쳐 주기도 합니다(희망합니다!).

GNU/Linux의 많은 장점 중 하나는 라이센스 및/또는 높은 소프트웨어 비용으로 인해 방해가 되는 "요식법"이 없다는 것입니다. 원하는 배포판에 맞게 자유롭게 수정할 수 있습니다. 이렇게 해라, 너~ 할 것이다귀하의 질문에서 제기된 문제뿐만 아니라 다른 많은 문제도 해결할 수 있을 만큼 능숙해지십시오.

이제 나는 내 길이 모든 사람을 위한 것이 아닐 수도 있다는 것을 충분히 알고 있습니다. 물론 자신에게 가장 적합한 학습 경로를 선택해야 합니다.

마지막으로 이런 일이 일어나길 진심으로 바랍니다.아니요거만하게 들리겠지만, 내 의도는 정반대입니다. 여러분이 더 관심을 갖고 GNU/Linux 괴짜 세계에 더 깊이 파고들도록 하려는 것입니다.

즐거운 해킹되세요!


*약 10년 전, Xorg를 해킹하고 GNU/Linux를 사용하여 오디오와 WiFi를 작동시키는 것은 쉬운 일이 아니었습니다. (그리고 Bluetooth를 시작하지 마십시오!)

관련 정보