Como obter o caminho, índice de linha e conteúdo da linha no shell bash?

0

Eu tenho um arquivo e quero pesquisar algum texto nesse arquivo e exportar o caminho do arquivo, o índice de linha do conteúdo iIsearched e o conteúdo da linha.

Eu uso este comando:

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

mas o resultado é:

tree.sh:1:abc xyz

Como posso obter cada linha no formulário:

tree.sh - 1 - abc xyz
    
por Vương Vũ 31.08.2016 / 04:35

2 respostas

3

Supondo que o seu grep suporta --color :

grep --color=always -rnw -e 'pattern' 'path-file' | sed -e 's/:/ - /;s// - /'
    
por 31.08.2016 / 05:02
1

Você pode analisá-lo com o 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

Como a pergunta original foi modificada, estou adicionando a opção sed:

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