AIX의 여러 파일에서 문자열 검색

AIX의 여러 파일에서 문자열 검색

이러한 문자열에 대해 여러 파일을 검색하려고 합니다. 이것이 중요하다면 AIX를 사용하십시오.

grep -r "gap" /u/user/.History/
/u/user/.History/server/user:
/u/user/.History/server/user:

파일 이름이 나열되어 있지만 일치하는 항목이 표시되지 않는 이상한 문자가 파일에 포함되지 않는 한 대부분의 경우 작동합니다. 그래서 이렇게 문자열 명령을 추가했습니다. 이 방법 중 어느 것도 작동하지 않습니다. 이 명령은 전혀 출력을 제공하지 않습니다. 일치하는 항목이 있다는 것을 알고 있어도 일치 항목이 없는 것처럼 동작합니다.

strings /u/user/.History | grep gap
strings /u/user/.History/* | grep gap
cat /u/user/* | strings | grep gap
cat /u/user/.History/* | strings | grep gap
cat /u/user/.History/ | strings | grep gap

문자열이 포함된 단일 파일을 grep하면 다음과 같은 출력이 제공됩니다. 여러 파일로 이 작업을 수행하면 작동하지 않습니다.

>strings /u/user/.History/server/user | grep gap
cd gap #▒#1612466141#▒#
gzip -cd gap2021-01-28.log.gz #▒#1612466384#▒#

답변1

나는 귀하의 명령이 실제로 올바른 파일을 찾고 일치하는 줄을 표시한다고 믿습니다 grep -r "gap" /u/user/.History/. 줄이 터미널에 기록될 때 텍스트를 가리는 인쇄할 수 없는 부분도 있다는 것입니다.

내 제안은 인쇄할 수 없는 부분이 인쇄 가능한 문자로 확장되어 기본 텍스트를 볼 수 있도록 출력을 필터링하는 것입니다.

grep -r "gap" /u/user/.History/ | cat -v

또는

find /u/user/.History/ -type f -exec grep gap {} + | cat -v

일을 할 것입니다. 이것cat -v명령 "인쇄되지 않는 문자를 보이는 문자로 표시..."

차이점을 보여주기 위해 몇 가지 테스트 파일을 만들었습니다.

$ grep -r gap .
./user1/.History/server/user:
./user2/user:gap

비교:

$ grep -r gap . | cat -v
./user1/.History/server/user:gap^?^?^?
./user2/user:gap

^?^?^는 어디에 있나요? 문자는 세 개의 "삭제" 문자를 나타냅니다. 있는 그대로 인쇄하면 이러한 삭제된 문자는 3자리 "간격" 문자열을 숨깁니다.

또 다른 옵션은 출력을 다음을 통해 파이프하는 것입니다.od, 아마도 ... | od -c.

답변2

나는 이를 수행하는 여러 가지 방법을 찾았습니다.

strings /u/user/.History/*/* | grep gap

그리고 find.

find /u/user -xdev -type f -exec strings {} + | grep gap
find /u/user -xdev -type f -exec strings {} \; | grep gap

관련 정보