Linux Bash 스크립트는 알려진 구분 기호를 사용하여 알 수 없는 출력을 구문 분석합니다.

Linux Bash 스크립트는 알려진 구분 기호를 사용하여 알 수 없는 출력을 구문 분석합니다.

저는 정찰 셸 스크립트를 작성 중이며 발견된 SID만 파일이나 변수에 저장할 수 있도록 odat sidguesser의 출력을 구문 분석하고 싶습니다. 예를 들어. 나에게는 밧줄이 있다.

[+] SIDs found on the 10.10.10.82:1521 server: XE,XEXDB

내가 하고 싶은 것은 이 출력을 분석하여 XE만 유지하는 것입니다. sed, awk 또는 grep 등을 사용하여 얼마나 많은 SID가 발견되는지 알지 못한 채 유효한 SID를 모두 얻을 수 있습니까? 다음을 통해 SID를 얻을 수 있습니다.

cat oracle-sid.txt | grep "server:" | rev | cut -d " " -f 1 | rev

단어/구분 기호 뒤에 XE, SID 또는 문자열 "server:"가 있기 때문에 이것은 내 목적에 매우 적합합니다.

답변1

$ sed -n -e 's/^.*server: //p' oracle-sid.txt
XE,XEXDB

일치하는 줄에서 sed스크립트는 줄의 시작 부분부터 "server:"(후행 공백 포함)까지 모든 내용을 제거한 다음 수정된 줄을 인쇄합니다. 일치하지 않는 행은 무시됩니다(즉, 인쇄되지 않음).

IP 주소와 포트도 유지하려면 다음을 수행하세요.

$ sed -e -e 's/^.* \([0-9.:]\+\) server: /\1\t/p' oracle-sid.txt
10.10.10.82:1521        XE,XEXDB

이는 첫 번째 버전과 동일한 작업을 수행하지만 IP:포트 및 탭을 포함합니다.

관련 정보