テキストファイルの特定のフィールドを別のテキストファイルに切り取る

テキストファイルの特定のフィールドを別のテキストファイルに切り取る

次のコマンドがあります。

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必要なものを達成する1つの方法は次のとおりです。

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

おすすめ記事