grep -v는 iwconfig에서 파이핑할 때 작동하지 않지만, 파일의 cat에서 파이핑할 때는 작동합니다.

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으로 파이프되었습니다. 그래서 -v.iwconfiggrep

이것은 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

요약하다:

  1. grep -v.grepcat
  2. iwconfig의 출력을 파이핑할 때 (1)과 동일한 동작을 재현할 수 없습니다 grep.

grep -v에서 다음 질문을 읽었지만 그 중 어느 것에서도 위 질문에 대한 답을 찾을 수 없습니다.

답변1

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.

답변2

아무도 이 대안을 언급하지 않았지만 사용을 고려할 것입니다.

iwconfig 2>&1 | grep -v "no wireless extensions"또한 해결책(어쩌면 더 우아할까요?)

이제 오류와 일반 출력이 모두 동일한 파일 설명자(표준 출력)로 전송되며, 이는 궁극적으로 전체 데이터를 필터링할 수 있는 grep으로 파이프됩니다.

관련 정보