2017-08-11 59 views
-3

我試圖從一行中剪出一行來格式化報告,從testssl掃描的結果中刪除。我正在尋找切斷線路,並採取前半部分(它看起來像它分裂在一個選項卡上)。Bash:在空白處分割一行

例子:

Secure Client-Initiated Renegotiation  not vulnerable (OK) 

我需要在我的bash腳本(的grep,sed的,AWK,等等)拉出第一部分的不僅僅是語言的一種方式。 TRICK,我猜測是testssl有很多測試,所以我需要一些東西,無論該行的第一部分被調用了什麼(我不能掛在任何實際的詞上,因爲它們會改變)。

任何幫助將非常感激!

+0

你到目前爲止嘗試過什麼?兩組單詞之間的分隔總是5個空格嗎? – pchaigno

+0

我已經嘗試了很多grepping。我已經設法至少將它分解成僅僅根據盒子的漏洞找到我需要的線條,但是砍到我需要的部分已經躲過了我。 下面是我用來實際得到我需要的作品: grep -v「not」FILENAME | egrep -o「。{0,42} VULNERABLE」} 這似乎至少可以從只有具有漏洞(忽略不是)到行開頭的行抓取。現在我只是想消除VULNERABLE和尾隨的空白。 – Balatro

+0

這裏的文件怎麼看起來儘可能的格式: 測試協議(通過OpenSSL的,通過套接字的SSLv2) 的SSLv2不提供(OK) 的SSLv3不提供(OK) TLS 1提供 測試漏洞 心臟出血漏洞( (CVE-2014-0160)不存在漏洞(OK),超時 CCS(CVE-2014-0224)不易受攻擊(OK) 安全重新協商(CVE-2009-3555)不易受影響(OK) 安全客戶端啓動的重新協商VULNERABLE (不好),潛在的DoS威脅 – Balatro

回答

0

正如您所猜測的那樣,您可以使用工具sedawk來實現此目的。但預計你應該以代碼的形式提供一些工作來解決你的問題(可能是下次?)。反正我要帶一咬牙:

使用awk

echo -e "Secure Client-Initiated Renegotiation\tnot vulnerable (OK)" | 
awk -FS"\t" '{print $1}' 

或使用sed

echo -e "Secure Client-Initiated Renegotiation\tnot vulnerable (OK)" | 
sed -E 's/^([^\t]+)\t.*$/\1/' 

注:在你的情況,你的命令替換echo

+0

非常感謝! Drat ......感嘆,看起來他們可能使用了間距而不是實際的選項卡來分隔字符串中的文本。兩種方法都像以前一樣返回整個字符串。我會翻譯語法,看看我能不能把它變成形狀。 老實說,我預料這會以某種方式變成被拉進某種正則表達式的煉獄。 我仍然圍繞腳本解決這些問題。我真誠地感謝迴應。 – Balatro

0

我結束了使用awk。目前我與運行:

的awk -F「*」‘{打印$ 1}’

這是分裂就多了一些空間,給我的第一部分(發現實際的漏洞)。