Como induzir a saída do grep? [duplicado]

0

Eu preciso que a saída do grep seja indentada com tabulações / espaços.

Esta é a versão simples e sem recuo: MyCmd | grep "id:"

Eu tentei isso sem sucesso: MyCmd | grep "id:" | echo " "

    
por Pietro 26.01.2016 / 13:38

2 respostas

4

Você poderia fazer isso com awk em vez de grep se isso for aceitável:

MyCmd | awk '/id:/ {print "   " $0}'

ou se você precisar do grep, sed poderia ajudar:

MyCmd | grep "id:" | sed -e 's/^/   /'

A versão awk faz sua própria correspondência de padrões para linhas que contêm "id:" e, em seguida, imprime os espaços antes da linha. A versão sed faz o grep como você já fez, mas substitui o início de cada linha (regex ^ corresponde ao início de uma linha) com os espaços

    
por 26.01.2016 / 13:42
3

Use apenas sed :

MyCmd | sed 's/^.*id:/\t&/'

O valor corresponderá a id: e apresentará uma guia no início das linhas correspondentes.

Exemplo:

% sed 's/^foo/\t&/' <<<'foobar' 
    foobar
    
por 26.01.2016 / 13:43