Como eu poderia obter a segunda linha da saída do grep como parâmetro de entrada para o vim?

0
$ grep -l -R "myEditor_Init" *
Public/Js/eWebEditor/dialog/ewebeditor.htm
Public/Js/eWebEditor/ewebeditor.htm
Public/Js/eWebEditor/js/ewebeditor.js

Por exemplo, eu gostaria de grep e vim o terceiro arquivo com um comando, como eu poderia fazer isso?

Obrigado.

    
por Jichao 18.02.2012 / 04:22

1 resposta

3

Como Ignacio sugere, você pode retrabalhar seu comando grep para obter somente o arquivo que você deseja, por exemplo:

$ grep -l -R --include="*.js" "myEditor_Init" *
Public/Js/eWebEditor/js/ewebeditor.js

Em um caso como este, você pode editá-lo com, por exemplo (use backticks para fornecer o resultado como um argumento para o vim:

$ vim 'grep -l -R --include="*.js" "myEditor_Init" *'

Se você realmente quiser usar * em vez de limitar a arquivos * .js, ainda poderá fazer:

$ vim 'grep -l -R "myEditor_Init" * | tail -1'

Eu frequentemente me encontro (usando csh ou bash) fazendo algo como o seguinte:

$ grep -l -R --include="*.js" "myEditor_Init" *
Public/Js/eWebEditor/js/ewebeditor.js
$ vim '!!'

onde !! repete o comando anterior e os backticks alimentam o resultado desse comando como um argumento para o vim.

    
por 18.02.2012 / 05:21

Tags