与值从另一个文件替换字符串的文件(replace string in a file with val

2019-07-02 16:03发布

我有两个文件。 他们中的一个定义了一组如下数-值对( 的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.没关系

有任何想法吗? 谢谢

Answer 1:

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

NR == FNR {A [$ 2] = $ 1;下一个} =>当处理的fileA这是真实的。 形成有关联数组,其中索引是与所述第一列作为其值的第二列中。

{$ 1 = [$ 1];} =>当第二文件被处理,与存储在数组中的值进行替换的第一列中。

1 =>打印每行。



Answer 2:

这可能会为你工作(GNU SED):

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


文章来源: replace string in a file with value from another file