쉘 스크립트: 일치하는 항목이 발견되면 파일에서 문자열의 일부를 추출합니다.

쉘 스크립트: 일치하는 항목이 발견되면 파일에서 문자열의 일부를 추출합니다.

파일에서 문자열 값을 추출하고 반환하려면 스크립트를 작성해야 합니다. 이 작업은 지정된 패턴과 일치하는 항목이 파일에서 발견된 경우에만 수행되어야 합니다.

예:

"id":"re454sv:57ghg34sfw:87wre56:rty4598gh" 

텍스트는 대용량 로그 파일의 하위 섹션이며 이와 같은 상황이 많이 발생할 수 있습니다 "id":"some value". 해당 디렉터리에 있는 많은 파일에서 매번 "일부 값" 부분을 반환해야 합니다.

Unix의 유틸리티가 여기에 도움이 될 것이라고 생각 sed하지만 정확한 사용법을 알 수 없습니다. 누구든지 도움을 주시면 기쁘겠습니다.

답변1

:첫 번째 구분된 값만 원하는지 아니면 marker 뒤의 나머지 줄 전체를 원하는지 명확하지 않습니다 "id".

전자는 다음과 같습니다

sed -nre 's/^"id":"([^:]*):.*/\1/p' <file>

후자는 다음과 같습니다

sed -nre 's/^"id":(.*)/\1/p' <file>

스위치가 중요하다는 점에 유의하세요. -n아무 것도 인쇄하지 않도록 하십시오( p일치하는 줄은 끝에 인쇄됩니다). -r괄호와 같은 항목을 이스케이프할 필요가 없도록 확장된 정규식 구문 분석을 활성화합니다.

답변2

sed 's/"id":"\([^"]*\)"/\1/g'

stdin을 통해 값을 입력한 경우 값을 추출합니다.

관련 정보