2016-03-20 18 views
0

Bana verilen formatta iki dosya vardır:Baskı eksik kelime ve dosya adı - linux

Dosya 1:

India 215.0 
country 165.0 
Indian 163.0 
s 133.0 
Maoist 103.0 
Nepal 89.0 
group 85.0 
Kathmandu 85.0 

Dosya 2:

Nepal 89.0 
would 88.0 
Kathmandu 85.0 
rule 82.0 
king 80.0 
parliament 79.0 
card 79.0 

Ben yazdırmak istediğiniz Bir dosyada mevcut olan ancak diğerinde olmayan kelimeler. Her kelimenin bulunduğu dosya da kelimenin yanında yazdırılmalıdır. Ben kullanarak çalıştı

India 215.0, file 1 
country 165.0, file 1 
group 85.0, file 1 
.... 
.... 
would 88.0, file 2 

: Örneğin, ben çıkış olmak istiyorum

grep -v file1 file2 

ben file2 içinde yer almayan kelimeler alırım ama file1 mevcut sözcükler istiyorum ve İlgili dosya adlarıyla birlikte file2 ve tersi. Bunu nasıl başarabilirim? Lütfen yardım et!

cevap

1
# print out all the rows only in file2 and append filename 
$ awk 'NR==FNR{a[$1]++;next} !($1 in a){print $0, FILENAME}' file1 file2                             
would 88.0 file2 
rule 82.0 file2 
king 80.0 file2 
parliament 79.0 file2 
card 79.0 file2 

# print all the rows only in file1 and append filename 
$ awk 'NR==FNR{a[$1]++;next} !($1 in a){print $0, FILENAME}' file2 file1                             
India 215.0 file1 
country 165.0 file1 
Indian 163.0 file1 
s 133.0 file1 
Maoist 103.0 file1 
group 85.0 file1 

varsayılan alan ayırıcı $1 ilk sütundur, boşluktur.