입력 파일에서 두 개의 반복 패턴 사이의 줄을 분리하고 선택한 각 줄을 별도의 파일로 리디렉션해야 합니다.
입력 파일 형식 예:
Pattern 1
Line1
Line2
Line3
Pattern 2
Pattern 1
Line4
Line5
Pattern 2
출력 파일:
파일 1:
Pattern 1
Line1
Line2
Line3
Pattern 2
파일 2:
Pattern 1
Line4
Line5
Pattern 2
쉘 스크립트의 일부로 이 작업을 어떻게 수행할 수 있습니까? 다음과 같은 awk 명령 구현이 있지만 전체 출력만 파일로 리디렉션합니다.
awk '/Pattern\ 1/,/Pattern\ 2/{print > "filename_$var.txt";var=var+1}var' $filename
답변1
다음을 시도해 볼 수 있습니다.
awk '{if ($0 ~ /Pattern 1/) a++} {print >> "file"a}' file
첫 번째 awk
는 첫 번째 열이 원하는 패턴으로 시작하는지 확인하는 것입니다.
그렇다면 도입되지 않은 변수가 a
증가합니다 a=1
.
두 번째 awk는 다음을 모두 추가합니다.모드 1도착하다모드 2문자열을 합성하다file
ㅏ파일로.
이게 도움이 되길 바란다.