我有一个多列文件,如下所示:
file1.txt
1 12 220 AJ-lett-K-MD
2 33 312 BCJ-23-660-numm
4 22 55 lett-C-100b
5 52 59 lett-C-100bc
6 82 995 numm-X-aab
和
file2.txt
1 338 339 89839,lett;847447,AJ-lett-K-MD
2 223 443 numm;33920;numm3,AJ-lett-K-MD,50
3 443 223 AFFVlett-C-100b,lett-C-100b
4 542 442 187;lett-C-100bc
7 765 765 XXXX-CCC
我正在尝试搜索
4th
第列,共列
file1.txt
在里面
第四
第列,共列
file2.txt
,如果存在,则打印
1st,2nd,3rd
列,共列
文件1.txt
使用
第四
第列,共列
文件2.txt
,位于
文件2.txt
。
例如
第四
第列,共列
1st line
在里面
文件1.txt
是
AJ-lett-K-MD
。它存在于
第四
列,共列
1st and 2nd lines
在里面
文件2.txt
。
所以,我需要打印
1st,2nd and 3rd colums
属于
第1行
属于
文件1.txt
具有
4th columns
属于
第1和第2行
属于
文件2.txt
:
因此,预期输出应为:
expected.txt
1 338 339 89839,lett;847447,AJ-lett-K-MD --> original
1 12 220 89839,lett;847447,AJ-lett-K-MD --> combination of file1 and file2
2 223 443 numm;33920;numm3,AJ-lett-K-MD,50 --> original
1 12 220 numm;33920;numm3,AJ-lett-K-MD,50 --> combination of file1 and file2
3 443 223 AFFVlett-C-100b,lett-C-100b --> original
4 22 55 AFFVlett-C-100b,lett-C-100b --> combination
4 542 442 187;lett-C-100bc --> original
4 22 55 187;lett-C-100bc --> combination
5 52 59 187;lett-C-100bc --> combination
7 765 765 XXXX-CCC
我的考验是
文件1.txt
作为变量,然后在
文件2.txt
:
grep -v ^# file1.txt | while read a b c d; do echo a=$a b=$b c=$c d=$d;
grep "$d" file2.txt
它给出了:
1 338 339 89839,lett;847447,AJ-lett-K-MD
2 223 443 numm;33920;numm3,AJ-lett-K-MD,50
3 443 223 AFFVlett-C-100b,lett-C-100b
4 542 442 187;lett-C-100bc
但是,我不知道如何继续。使用
awk
或
python
?感谢您的帮助!
PS:The
第四
中的列
文件1.txt
不是唯一的,我需要所有匹配项(不仅仅是第一个)。
重要编辑:我在以下网站上以不同和更好的方式解释了我的问题:
Searching partial match of string in a column in a column of another file
他们寻找相似但不同的输出。