![](/img/trans.png)
[英]Bash/Awk: Find common translocations in two files using overlapping coordinates
[英]Finiding common lines for two files using bash
文件 1
1990.A.BHT_ScS.dat 1537 -2.21
1993.C.BHT_ScS.dat 1494 1.13
1994.I.BHT_ScS.dat 1545 0.15
1995.K.BHT_ScS.dat 1624 1.15
文件2
1990.A.BHT_ScS.dat 1537 -2.21 1993.C.BHT_ScS.dat 1494 1.13 1994.I.BHT_ScS.dat 1545 0.15 1995.K.BHT_ScS.dat 1624 1.15
我想比較兩個文件和 output 文件中名稱的第一部分**(例如:1990.A.BHT)**
例如:file3(輸出)
while read line
do
grep $line file1 >> file3
done < file2
我使用了以下使用 grep 命令的代碼
grep -wf file1 file2 > file3
和
grep -wf file1 file2 > file3
我在使用這個腳本之前對文件進行了排序。 但我得到一個空的file3
。 有人可以幫我嗎?
您需要從file2
的行中刪除從_SCS.dat
開始的所有內容。 然后您可以將其用作匹配 file1 中的行的模式。
grep -F -f <(sed 's/_SCS\.dat.*//' file2) file1 > file3
-F
選項匹配固定字符串,而不是將它們視為正則表達式。
在您的示例數據中,這些行似乎是按排序順序排列的。 如果您可以保證它們總是如此,那么comm -1 -2 file1 file2
就可以完成這項工作。 如果它們可以未排序,請執行
comm -1 -2 <(sort file1) <(sort file2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.