【发布时间】:2016-10-24 14:21:34
【问题描述】:
尝试了几个类似问题的答案,但没有得到正确的结果。尝试在第二个文件中搜索变量,如果存在则用第二个变量替换,否则保持原始...
文件1.txt
a
2
c
4
e
f
文件2.txt
2 b
4 d
想要的输出.txt
a
b
c
d
e
f
到目前为止,我所拥有的似乎有点工作,但是在发生替换的任何地方,我都会得到一个空白行而不是新变量...... 当前输出.txt
a
c
e
f
当前代码....
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
【问题讨论】:
-
也只是一个评论,这些文件对于 file1 大约有 200 万行,对于 file2 大约有 150 万行。我只想在 file2 中找到匹配项时更改 file1。我检查了输出文件中的行数以确保它是正确的,但当我检查一些我知道应该更改的内容时,我发现它们是空行而不是新变量。所以它似乎是在找到匹配的变量,然后什么都没有替换它。
-
当前代码缺少右括号。
-
修复了括号,在我的实际代码中,所以不是导致问题的原因。谢谢。
-
不,不是。你的数据一定有问题。代码很好。双标签什么的。或者一个制表符和一个空格。