Saída de um liner Perl [closed]

2

Eu tenho um perl one-liner:

perl -pe 'while (/((\(.*?[^)]\))|(".*?"))/g) {print " ";} print "\n"' testdata

O arquivo testdata contém o seguinte:

"123" (123) 123

Ouput é:

"123" (123)
"123" (123) 123

Mas eu preciso:

"123" (123)

O que posso fazer?

    
por A.B. 03.05.2015 / 16:08

2 respostas

2

Como muru comentou:

  

-p imprime $_ . Se você for fazer sua própria impressão, use -n .

perl -ne 'while (/((\(.*?[^)]\))|(".*?"))/g) {print " ";} print "\n"' testdata
    
por A.B. 03.05.2015 / 17:35
-1

Hm, você poderia simplesmente colocar sua consulta (o padrão de dados) que você está procurando entre esses símbolos e exigir estritamente isso por

'padrão de dados'

qualquer que seja esse padrão de dados ... até mesmo os curingas são então permitido também ...

isso ficaria aqui como parte de seu uso pretendido de seu comando como

'"123" (123)'

ou seria parecido com

\ '"123" (123) \'

após o seu comentário eu adicionei o seguinte (por favor não me downvote - em vez permanecer construtivo com a sua opinião, mas não use seus polegares como no cakepoof) para adicionar ou vincular sua linha perl com um pipe grep -e da seguinte forma:

  

perl -pe 'while (/(((.?[^)]))|(".?"))/g) {print "$ 1";} print "\ n "'testdata | grep -e '"123" (123)'

ou

  

perl -pe 'while (/(((.?[^)]))|(".?"))/g) {print "$ 1";} print "\ n "'testdata | grep -e \ '"123" (123) \'

    
por dschinn1001 03.05.2015 / 16:29