Como imprimir os números de linha com a linha correspondente que corresponde a um padrão usando o comando shell? [duplicado]

6

Arquivo,

.false alarm is bla no. 11
.no alarm generated is bla
.application will be killed is bla wall command
.doc file is document file with .doc extension
.no authority for this selection bla

Agora, o que eu quero no meu arquivo de saída para imprimir as linhas que contém apenas a palavra bla (ou pode ser o número também)

A saída será assim,

1 .false alarm is bla no. 11
2 .no alarm generated is bla
3 .application will be killed is bla wall command
5 .no authority for this selection bla
    
por pmaipmui 25.08.2015 / 21:33

1 resposta

12

Muitas ferramentas podem ser úteis:

  • -n de grep é exatamente o que você está procurando.

    grep -n 'bla' file
    
  • alternativamente awk :

    awk '/bla/{print NR":"$0}' file
    
  • alternativamente perl :

    perl -ne 'print $.,":",$_ if /bla/' file
    
  • alternativamente sed :

    sed '/bla/!d;=' file |sed 'N;s/\n/:/'
    
por 25.08.2015 / 21:39