값을 계속해서 반복하는 거대한 로그 파일이 있습니다. A부터 D까지의 단어 세트를 찾고 싶지만 일치 후에 중지합니다. 아래에서 다시 시작하세요.
sed -n -e '/Word A/,/Word D/ p'
첫 번째 "Word D"를 찾은 후 멈추게 하는 방법
Word A
Word B
Word C
Word D
Word E
Word F
Word D
Word G
sed -n -e '/Word A/,/Word D/ p'의 예상 결과
Word A
Word B
Word C
Word D
실제 결과:
Word A
Word B
Word C
Word D
Word E -> should not exist
Word F -> should not exist
Word D -> should not exist
Word G -> should not exist
답변1
GNU 4.2.2를 사용하여 sed
복사 할 수 없습니다.
home:~/scratch/
$ sed -ne '/Word A/,/Word D/p' input
Word A
Word B
Word C
Word D
home:~/scratch/
$ cat input
Word A
Word B
Word C
Word D
Word E
Word F
Word D
Word G
답변2
sed
OpenBSD 또는 GNU를 사용하여 이 문제를 재현 할 수 없습니다 sed
.
데이터가
단어 A 단어 B 워드 C 단어 D 단어 E 단어 F 단어 A 단어 D 단어 G
(추가 Word A
줄에 주목하세요)
$ sed -n -e '/Word A/,/Word D/p' data.in
Word A
Word B
Word C
Word D
Word A
Word D
이 출력의 첫 번째 비트만 원하는 경우:
$ sed -n -e '/Word A/,/Word D/p' -e '/Word D/q' data.in
Word A
Word B
Word C
Word D
답변3
내 문제는 이스케이프 문자가 올바르지 않다는 것입니다. 팁을 주신 모든 분들께 감사드립니다.
for /f "tokens=* " %%e in ('sed -n "/\/ios\/mdm2\/%Perimeter%.*DEBUG MDM payload/,/<\/plist>/p" %log%') do ( echo %%e > file.txt)