Bash 쉘에서 경로, 줄 색인 및 줄 내용을 얻는 방법은 무엇입니까?

Bash 쉘에서 경로, 줄 색인 및 줄 내용을 얻는 방법은 무엇입니까?

파일이 있는데 파일에서 일부 텍스트를 검색하고 파일 경로, i검색된 콘텐츠의 줄 인덱스 및 줄 콘텐츠를 내보내고 싶습니다.

나는 다음 명령을 사용합니다.

grep -rnw 'path-file' -e 'patter'

그러나 결과는 다음과 같습니다.

tree.sh:1:abc xyz

테이블의 각 행을 가져오는 방법:

tree.sh - 1 - abc xyz

답변1

귀하의 grep지원을 가정하면 --color:

grep --color=always -rnw -e 'pattern' 'path-file' | sed -e 's/:/ - /;s// - /'

답변2

awk를 사용하여 구문 분석할 수 있습니다.

$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $1}'
tree.sh
$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $2}'
1
$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $3}'
abc
$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $4}'
xyz

원래 질문이 수정되었으므로 sed 옵션을 추가했습니다.

$ echo "tree.sh:1:abc xyz" | sed -e "s/:/ - /g"
tree.sh - 1 - abc xyz

관련 정보