텍스트 파일의 특정 필드를 다른 텍스트 파일로 잘라내기

텍스트 파일의 특정 필드를 다른 텍스트 파일로 잘라내기

다음 명령이 있습니다.

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

관련 정보