Recorte alguns campos de um arquivo de texto para outro

1

Eu tenho o seguinte comando:

grep -owf champs.txt  t.txt

e eu quero cortar o resultado desse comando do arquivo t.txt para outro arquivo. Eu sei que isso pode ser conseguido por um comando aninhado, mas eu não sei como fazê-lo.

Note que no arquivo t.txt , eu tenho:

select * from student
insert name age from professors 
delete from departement where DPTNUM= 20

e no arquivo champs.txt tenho:

select
insert
into
values
delete
drop
from
create
table
where
set
varchar
number

, então o resultado desejado para a primeira linha é:

* student
    
por Aomine Daiki 14.04.2015 / 11:26

1 resposta

2

Aqui está uma maneira de awk de conseguir o que você deseja:

awk '
  NR==FNR { k[$1] ; next }
  { for (i=1; i<=NF; i++) if($i in k) $i="" ; gsub(/ +/," ") }
  1
' champs.txt t.txt

(O gsub é apenas por conveniência, comprime sequências de espaços em branco.)

Para os dados de amostra, o resultado é:

 * student
 name age professors
 departement DPTNUM= 20
    
por 14.04.2015 / 11:56