여러 파일을 검색할 때 grep의 출력은 다음과 같습니다.
{FILE}:{MATCH}
{FILE}
섹션을 두 번 클릭하면 적어도 섹션 :
과 일부 일치 항목 도 선택(및 복사)하기 때문에 이것이 문제가 됩니다 . grep이 출력 형식을 다음과 같이 지정하도록 하려면 어떻게 해야 합니까?
{FILE} : {MATCH}
기본적으로 열 앞에 공백을 삽입하고 싶습니다. (후자의 옵션은 선택사항입니다)
답변1
grep -T
7/8 근무 가능합니다.
% for f in a ab abc abcd abcde abcdef abcdefg abcdefgh; do echo pattern > $f; done
% grep -T pattern *
a :pattern
ab :pattern
abc :pattern
abcd :pattern
abcde :pattern
abcdef :pattern
abcdefg:pattern
abcdefgh :pattern
~에서GNU grep 매뉴얼:
-T
--initial-tab
탭 정렬이 정상적으로 보이도록 실제 줄 내용의 첫 번째 문자가 탭 정지에 있는지 확인하세요. 이는 실제 콘텐츠 접두사가 붙은 출력이 있는 옵션에 유용합니다:
-H
,-n
및-b
. 단일 파일의 행이 모두 동일한 열에서 시작될 확률을 높이기 위해 행 번호와 바이트 오프셋(있는 경우)이 최소 크기 필드 너비로 인쇄됩니다.
답변2
grep
내가 아는 한, 이 일은 혼자서는 할 수 없습니다. 파일 이름 :
에 다음이 없다고 가정합니다.
grep ... | sed 's/:/ : /'
첫 번째 것만 :
채워집니다.
물론 grep
파일 이름만 인쇄할 수도 있습니다.
grep -l ...
답변3
무엇을 구성하는가단어두 번 클릭 선택에 관한 한 터미널(및/또는 X 도구 키트)에 따라 다르며 일부 터미널의 경우 사용자 정의할 수 있습니다.
을 위한 xterm
,캐릭터는 다음과 같이 구성됩니다.친절한(문자, 공백...)을 선택하고 두 번 클릭하면 동일한 카테고리의 인접한 문자를 선택할 수 있습니다.
기본 설명거기. 기본적으로 :
예아니요자체 와 동일한 카테고리에 속 /
하지만 문자나 숫자와는 동일한 카테고리에 속하지 않습니다.
일부 시스템에서는 다음을 제공하여 기본값을 변경합니다.자원xterm
좋아하는 경우 /etc/X11/app-defaults/XTerm
.
Linux Mint 시스템에서 다음을 발견했습니다.
! Here is a pattern that is useful for double-clicking on a URL:
*charClass: 33:48,35:48,37-38:48,43-47:48,58:48,61:48,63-64:48,95:48,126:48
이렇게 하면 문자 58( :
)과 47이 문자 및 숫자(48)와 동일한 범주에 들어갑니다.
당신이 할 수 있는 일은 :
자신의 리소스 파일을 통해 자신의 클래스에 남아 있도록 변경하는 것입니다.
예를 들어, 다음을 추가하면:
XTerm*charClass: 33:48,35:48,37-38:48,43-47:48,61:48,63-64:48,95:48,126:48
귀하의 ~/".Xdefaults-$(uname -n)"
파일 이름을 두 번 클릭하면 :
.
다음을 통해 실험해 볼 수 있습니다.
xterm -cc 33:48,35:48,37-38:48,43-47:48,61:48,63-64:48,95:48,126:48
세 번 또는 네 번 클릭하면 정규식으로 다양한 선택 방법을 정의할 수도 있습니다. 예를 들어
XTerm*on3Clicks: regex [^:]+
콜론이 아닌 일련의 문자를 선택합니다삼진.
답변4
이는 grep
각 입력 파일에 대해 새 프로세스가 생성되기 때문에 매우 비효율적이지만 다음과 같습니다.
파일 목록(예: *
)이 주어지면 다음을 실행합니다.
f의 경우파일 목록 하다 grep --label="$f" --with-파일 이름무늬<"$f" 완벽한
--label=string
실제로 "표준 입력을 읽을 때 입력 파일 이름은 string
"으로 간주됩니다.
--with-filename
( -H
짧게)는 "각 일치하는 파일 이름을 인쇄합니다."는 검색할 파일이 여러 개 있는 경우 기본값입니다. IMNSHO, 지정할 때 기본적으로 켜져 있어야 --label
하지만 작동하는 방식은 아닌 것 같습니다. 내 코드(위)에서는 매개변수의 파일 이름에 공백을 추가하므로 --label
결과는 다음과 같습니다.
파일 이름:라인 매칭 모드 ⁞
파일 이름이 에서 온 경우 find
다음을 수행하십시오.
찾다(경로...) (표현)-exec sh -c 'grep --label="$1" -H무늬< "$1"' sh {} ";"