2012-10-26 76 views
0

我有兩個文件。他們中的一個定義了一組數 - 值對如下(的fileA):用另一個文件中的值替換文件中的字符串

1 asm 
2 assert 
3 bio 
4 bootasm 
5 bootmain 
6 buf 
7 cat 
8 console 
9 defs 
10 echo 

其他文件包含一堆值配對,如下(FILEB):

bio types 
bio defs 
bio param 
bio spinlock 
bio buf 
bootasm asm 
bootasm memlayout 
bootasm mmu 
bootmain types 
bootmain elf 
bootmain x86 
bootmain memlayout 
cat types 
cat stat 
cat user 

我想編寫一個腳本,用文件A中的相應編號替換文件B上的值。 生成新文件或更改現有文件B無關緊要。

任何想法? 由於

回答

3
awk 'NR==FNR{a[$2]=$1;next}{$1=a[$1];}1' fileA fileB 

NR == FNR {A [$ 2] = $ 1;下一個} =>當處理的fileA這是真實的。一個關聯數組形成索引是以第一列作爲其值的第二列。

{$ 1 = [$ 1];} =>當處理所述第二文件時,替換存儲在數組中的相應值的第一列中。

1 =>打印每行。

1

這可能會爲你工作(GNU SED):

sed 's|^\s*\(\S*\)\s*\(.*\)$|/^\2\\>/s//\1/|' fileA | sed -f - fileB 
相關問題