답변1
grep을 grep에 연결할 필요는 없습니다. (이는 거의 항상 비효율적이고 잘못된 접근 방식을 취하고 있다는 신호입니다. sed
그것만으로도 작업에 충분할 것입니다. or.or awk
) perl
, 그것은 sudo su root cat
단지 말도 안되는 일입니다.
이 시도:
$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
/media/sf_partageAuth/auth.log > /mnt/analyse/traitement/cueillette.txt
"인증 실패"와 일치하는 모든 행에 대해(참고,아니요"확실성필리핀 제도cation"), 이 sed
스크립트는 줄의 시작부터 까지의 모든 항목 rhost=
과 IP 주소 뒤의 모든 항목을 제거한 다음 해당 줄을 인쇄합니다.
정규 표현식을 확장하기 위해 sed
' 옵션을 사용하므로 이스케이프 없이 작동합니다 .-E
()
+
sed
명령이 루트로 실행 되더라도 sudo
출력 리디렉션은 그렇지 않습니다. 이는 루트가 아닌 원래 쉘에서 수행됩니다. 출력 파일에 쓰기 위해 루트 권한도 필요한 경우 run 을 사용하십시오 tee
. sudo
예를 들면 다음과 같습니다.
$ sudo sed -n -E -e '/sshd.*authentication failure/{s/^.*rhost=([0-9.]+).*/\1/p}' \
/media/sf_partageAuth/auth.log |
sudo tee /mnt/analyse/traitement/cueillette.txt > /dev/null