Grep
grep -v 從 iwconfig 管道時不起作用,但在文件上從 cat 管道時起作用
我正在執行
iwconfig | grep -v "no wireless extensions"
,但無法讓 -v 選項按預期工作。我想排除包括“無無線擴展”在內的行,即,我只想顯示活動/工作的無線介面或應該呼叫的任何內容。一開始我以為命令輸出到的流可能與通過管道傳輸到 grep 的流不同,所以我嘗試了
cat myFile | grep -v myExclusionPattern
. 這按預期工作,所以我得出結論-v
做我期望它做的事情。然後我再次嘗試iwconfig | grep "no wireless extensions"
,結果是預期的 - 這意味著 iwconfig 的輸出是通過管道傳輸到 grep 的。所以我留下了一個問題,為什麼在傳遞 to-v
的結果時具體不起作用。iwconfig``grep
這是我對 iwconfig 的輸出:
enp4s0 no wireless extensions. docker0 no wireless extensions. lo no wireless extensions. wlp5s0 IEEE 802.11 ESSID:"myEssid" Mode:Managed Frequency:5.24 GHz Access Point: 74:83:C2:75:86:2A Bit Rate=6 Mb/s Tx-Power=30 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on Link Quality=59/70 Signal level=-51 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:747 Missed beacon:0
總結:
grep -v
當我通過管道傳輸到grep
帶有cat
.iwconfig
將to的輸出通過管道傳輸時,我無法重現與 (1) 中相同的行為grep
。我在 grep -v 上閱讀了以下問題,但無法在其中任何一個中找到上述問題的答案:
iwconfig
輸出到標準輸出和標準錯誤,這取決於它是否找到了介面的任何無線擴展。管道僅影響標準輸出。刪除發送到標準錯誤流的輸出的範例(僅顯示具有無線擴展的介面):
$ /usr/sbin/iwconfig 2>/dev/null wlp4s0 IEEE 802.11 ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=22 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on
刪除發送到標準輸出流的輸出範例(僅顯示
iwconfig
未能找到無線擴展的介面):$ /usr/sbin/iwconfig >/dev/null lo no wireless extensions. enp0s31f6 no wireless extensions. wwan0 no wireless extensions. docker0 no wireless extensions. br-ca679f9ee354 no wireless extensions. veth232fd86 no wireless extensions. vboxnet0 no wireless extensions.