将文本文件中的某些字段剪切到另一个文本文件中

将文本文件中的某些字段剪切到另一个文本文件中

我有以下命令:

grep -owf champs.txt  t.txt

我想将此命令的结果从文件剪切t.txt到另一个文件。我知道它可以通过嵌套命令来实现,但我不知道该怎么做。

请注意,在文件中t.txt,我有:

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

在文件中champs.txt我有:

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

所以第一行的期望结果是:

* student

答案1

这是awk实现您想要的目标的一种方法:

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

(这gsub只是为了方便,它压缩了空白序列。)

对于您的样本数据,结果是:

 * student
 name age professors
 departement DPTNUM= 20

相关内容