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:ポートとタブを含みます。

おすすめ記事