cat 명령을 다른 명령으로 파이프하면 파일 이름 출력을 중지하려면 어떻게 해야 합니까?

cat 명령을 다른 명령으로 파이프하면 파일 이름 출력을 중지하려면 어떻게 해야 합니까?

정규식을 배우려고 해서 일부 문자가 포함된 파일을 만들었습니다. cat 명령을 사용하고 이를 텍스트 필터링 인수와 함께 rgrep 명령에 파이프하면 생성되는 출력은 "filename:filtered_text"입니다.

cat regex.txt | rgrep -E '^a'
regex.txt:a
regex.txt:aa
regex.txt:aaa
regex.txt:aaaa
regex.txt:aaaaa
regex.txt:aaaaaa
file:acpi
file:adduser.conf
file:aliases
file:aliases.db
file:alternatives
file:anacrontab
file:apache2
file:apg.conf
file:apm
file:apparmor
file:apparmor.d
file:apport
file:appstream.conf
file:apt
file:avahi

뿐만 아니라 폴더의 다른 파일을 확인하고 정규식과 일치하면 단일 파일만 파이핑하더라도 해당 파일을 표시합니다.

cat에 전달된 파일의 내용만 포함된 일반 출력을 얻으려면 어떻게 해야 합니까?

답변1

-hwith 플래그는 파일 이름을 인쇄하는 플래그 rgrep이므로 사용해야 합니다 . rgrep이 플래그는 이를 방지합니다.

rgrepsimple grepand cat. 따라서 우선 그럴 필요가 없습니다 cat. grep PATTERN FILE충분한. 두 번째 rgrep상응 하는 플래그 는 grep -r다음과 같습니다 .-rgrep

-r, --재귀 각 디렉토리 아래의 모든 파일은 기호 링크가 명령줄에 있는 경우에만 반복적으로 읽혀집니다. 파일 피연산자가 제공되지 않으면 grep은 작업 디렉토리를 검색합니다. 이는 -d 재귀 옵션과 동일합니다.

간단한 해결 방법을 찾으려면 다음을 시도해 보세요.

grep '^a' regex.txt

(이 모드에서 해당 스위치를 사용하는 이유는 확실하지 않습니다 -E.)

답변2

rgrep바로가기입니다(내 우분투 18.04: 스크립트) grep -r. man grep:

   -r, --recursive
          Read  all  files  under  each directory, recursively,

실제로 는 무시되는 것 같아서 cat사용하는데 아무런 의미가 없습니다 .rgrep

관련 정보