저는 정찰 셸 스크립트를 작성 중이며 발견된 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:포트 및 탭을 포함합니다.