我有两个文件。其中一个定义了一组数值对,如下所示( 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无关紧要。
有什么想法吗? 感谢
答案 0 :(得分:3)
awk 'NR==FNR{a[$2]=$1;next}{$1=a[$1];}1' fileA fileB
NR == FNR {a [$ 2] = $ 1; next} =>处理fileA时也是如此。形成一个关联数组,其中索引是第二列,第一列作为其值。
{$ 1 = a [$ 1];} =>处理第二个文件时,将第一列替换为存储在数组中的适当值。
1 =>打印每一行。
答案 1 :(得分:2)
这可能适合你(GNU sed):
sed 's|^\s*\(\S*\)\s*\(.*\)$|/^\2\\>/s//\1/|' fileA | sed -f - fileB