awk在匹配时查找并将变量file2替换为file1

时间:2016-10-24 14:21:34

标签: bash awk

尝试了几个类似问题的答案,但结果并不完全正确。尝试在第二个文件中搜索变量,如果在那里则替换为第二个变量,否则保持原始...

FILE1.TXT

a
2
c
4
e
f

FILE2.TXT

2 b
4 d

通缉Output.txt

a
b
c
d
e
f

到目前为止,我所做的工作似乎有点工作,但在替换发生的任何地方,我都会得到一个空白行而不是新变量...... 当前Output.txt

a

c

e
f

Curent code ....

awk -F'\t' 'NR==FNR{a[$1]=$2;next} {print (($1 in a) ? a[$1] : $1)}' file2.txt file1.txt > output.txt

也试过并得到了同样的结果......

awk -F'\t' 'NR==FNR{a[$1]=$2;next} {$1 = a[$1]}1' file2.txt file1.txt > output.txt 

抱歉,首先写错了..修复了键值问题。

尝试过你做了什么,仍然没有在output.txt

中丢失
awk -F'\t' 'NR==FNR{a[$1]=$2;next} $1 in a{$1 = a[$1]}1' file2.txt file1.txt > output.txt

2 个答案:

答案 0 :(得分:1)

您的键值对不正确... $ 1是键,$ 2是值。

$ awk -F'\t' 'NR==FNR{a[$1]=$2;next} $1 in a{$1=a[$1]}1' file.2 file.1
a
b
c
d
e
f

答案 1 :(得分:0)

尝试以下解决方案 -

awk 'NR==FNR{a[$1]=$NF;next} {print (a[$NF]?a[$NF]:$1)}' file2.txt file1.txt

a
b
c
d
e
f