remove linhas de um arquivo de saída do diff

1

Eu tenho um script que usa diff -c , em seguida, coloca a saída em um arquivo de texto. O que eu quero é remover a linha que não tem o "!" e exiba as linhas com o ponto de exclamação. Isso é possível? O comando cut pode fazer o truque?

Eu queria usar diff -c porque ele separa os arquivos de directory1 para directory2.

exemplo:

*** 1,3 ****
! 3856715355 /home/dir
  4294967277 /home/dir/file1 <---remove this line
! 154272340 /home/dir/file5
--- 1,4 ----
! 1765342654 /home/dir
  4294967277 /home/dir/file1 <--- remove this line
! 803775803 /home/dir/file4
! 2580902204 /home/dir/file99
    
por midnight27 12.01.2015 / 19:42

2 respostas

1
  • com grep :

    diff -c file1 file2 | grep '^[-!*]''
    
  • com sed :

    diff -c file1 file2 | sed '/^[-!*]/!d'
    
por 12.01.2015 / 19:46
1

Com grep:

diff -c file1 file2 | grep -v '^  '

nenhuma das outras linhas começa com dois espaços: não os que começam com ! e não as indicações de linha.

    
por 12.01.2015 / 19:54