이것은 까다롭습니다. 입력은 여러 줄에 걸쳐 한 줄에 여러 번 나타납니다. "id=" 행이 많지만 ai-c "id="로 시작하는 행만 원합니다.
입력 예(긴 두 줄):
d-fl ai-c" id="3af3a73f26a63a-list-" lima zulu bravo hotel d-fl ai-c" id="7ab8273f273e7273f82c2-list-" alpha id="8372364fa2361ab1-list-" hotel foxtrox mike d-fl ai-c" id="973a72b72c72df12a2-list-" uniform hotel
11월 2선 골프 시작 d-fl ai-c" id="83hd826ab712cc71-list-" bravo mike mike d-fl ai-c" id="7612364bab72a-list-" 골프 마이크
원하는 출력은 다음과 같습니다.
id="3af3a73f26a63a"
id="7ab8273f273e7273f82c2"
id="973a72b72c72df12a2"
id="83hd826ab712cc71"
id="7612364bab72a"
내가 본 모든 스크립트 예제는 한 줄의 첫 번째 항목에서만 작동하는 것 같습니다.
답변1
한 가지 방법은 다음과 같습니다.
grep -oP '\hai-c"\h\Kid="[^-]*' input.file | sed -e 's/$/"/'
GNU grep
일치하는 항목이 발견되면 전체 줄을 출력하는 기본값이 아닌 일치하는 항목만 출력하는 옵션 과 기능을 사용합니다 .Perl
-o
산출:
id="3af3a73f26a63a"
id="7ab8273f273e7273f82c2"
id="973a72b72c72df12a2"
id="83hd826ab712cc71"
id="7612364bab72a"
답변2
다른 방법:
sed ' s/d-fl ai-c" /\n/g; s/-/"\n/g; :L; /^id=/ P; D; bL; ' file
id="3af3a73f26a63a"
id="7ab8273f273e7273f82c2"
id="973a72b72c72df12a2"
id="83hd826ab712cc71"
id="7612364bab72a"