해당 용어를 포함하고 다른 용어를 제외해야 하는 grep 검색을 구축하려고 합니다. 여러 -E "pattern" 옵션을 사용하려고 시도했지만 작동하지 않았습니다.
다음은 제가 시도한 명령의 예입니다.
grep -Ei "\,17\:31" | grep -Eiv "10\.10\.210\.154" file.csv
그러나 출력 결과는 두 번째 제약 조건인 grep -Eiv "10.10.210.154"와만 일치합니다.
답변1
\,17\:31
IP에서 찾지 않고 찾고 싶다고 가정10\.10\.210\.154
이것을 사용할 수 있습니다.
grep -Ei "\,17\:31" file.csv | grep -Eiv "10\.10\.210\.154"
답변2
메모:다른 대답작동해야 하지만 아무것도 설명하지 않습니다. 그러므로 나의 설명적인 대답.
grep
두 번째 사람에게 를 읽으라고 말씀하셨으니 file.csv
그렇습니다. 표준 입력은 grep
파일에 대해 작동할 때 수행되는 작업이므로 무시합니다 .
실제로 두 번째는 grep
첫 번째가 없었던 것처럼 작동합니다. 파일을 처리하고 출력(있는 경우)을 인쇄한 후 종료됩니다.
첫 번째는 grep
입력을 기다립니다(대화형 셸에서 실행되는 경우 일반적으로 키보드에서 입력). 파이프 버퍼가 출력을 두 번째 grep
. 그런 다음 두 번째 항목이 grep
더 이상 없으면 첫 번째 항목에 grep
파이프가 파손되었음을 알립니다. 종료됩니다.
Ctrl또는 +를 눌러 D입력이 끝났음을 나타낼 수도 있습니다. 또는 Ctrl+를 눌러 첫 번째 (아직 살아 있는 경우 두 번째도)를 C죽일 수 있습니다. grep
하지만 이렇게 해도 데이터 흐름이 수정되지는 않습니다.
적절한 데이터 흐름은 다음과 같습니다. 첫 번째 grep
파일을 읽은 다음 결과를 두 번째 파일로 파이프해야 합니다.
grep -Ei "\,17\:31" file.csv | grep -Eiv "10\.10\.210\.154"
# or
<file.csv grep -Ei "\,17\:31" | grep -Eiv "10\.10\.210\.154"
후자의 구문에는 최소한 한 가지 장점이 있습니다.이건 내 또 다른 대답이야.