Linux

我想從命令輸出中列印確切的單詞

  • May 2, 2020
telnet test | grep -o Unable
telnet: Unable to connect to remote host: Connection refused

結果應該只有“無法”。

telnet無法連接時輸出的錯誤資訊會列印到標準錯誤流中。預設情況下,標準錯誤流直接發送到終端。您只能將標準輸出流通過管道傳輸到其他命令(grep在這種情況下)。

您可以通過重定向將錯誤流發送到標準輸出流:

telnet test 2>&1 | grep -o Unable

這將合併兩個流,grep並將作用於合併的數據流。

如果您想在 中擷取錯誤情況telnet,也可以使用該實用程序的退出狀態:

if ! telnet test 2>/dev/null; then
   echo 'something went wrong with telnet'
   exit 1
fi

echo 'telnet ran successfully'

如果telnet返回非零退出狀態(表示某種失敗),這將退出腳本。我另外將錯誤流重定向到/dev/null以完全丟棄它。

引用自:https://unix.stackexchange.com/questions/584081