我有一个包含以下号码的文件 FILE1.TXT
1
5
6
8
14
我有另一个名为rmsd.txt的文件,其中包含如下所示的值
1 2.12
2 3.1243
3 4.156
4 3.22
5 3.882
6 8.638
7 8.838
8 7.5373
9 10.7373
10 8.3527
11 3.822
12 5.672
13 7.23
14 5.9292
我想从rmsd.txt获取第2列的值,以获取file.txt中的数字。我希望得到类似下面的内容
1 2.12
5 3.882
6 8.638
8 7.5373
14 5.9292
我可以像grep 1 rmsd.txt
那样做,等等,但这需要很长时间。我正在尝试类似
for a in awk '{print $1}' file.txt; do
grep $a rmsd.txt >result.txt
done
但它没有用。也许这很简单,我在思考方向错误。任何帮助将受到高度赞赏。
答案 0 :(得分:0)
for WORD in `cat FILE`
do
echo $WORD
command $WORD > $WORD
done
编辑:这是您的代码,几乎没有修复:
for a in `awk '{print $1}' file.txt`
do
grep $a rmsd.txt >>result.txt
done
答案 1 :(得分:0)
这是为awk
定制的工作:
awk 'NR==FNR{a[$1]; next} $1 in a' file1.txt msd.txt
1 2.12
5 3.882
6 8.638
8 7.5373
14 5.9292
很可能它是重复的,只要我找到一个好的副本,我就会标记它。
答案 2 :(得分:0)
awk
救援!
$ awk 'NR==FNR{a[$1];next} $1 in a' file1 file2
1 2.12
5 3.882
6 8.638
8 7.5373
14 5.9292
或sort/join
$ join <(sort file1) <(sort file2) | sort -n
或grep/sed
$ grep -f <(sed 's/.*/^&\\b/' file1) file2