Text-Processing

根據文件 A 指定的順序,使用文件 A 中的數字從文件 B 中獲取唯一 ID

  • May 9, 2017

我想使用 file 的編號根據 file指定的順序whitelist.txt從 file 中獲取唯一的標識號。例子:list.txt``whitelist.txt

$ cat whitelist.txt:  
2  
5  
7  
10   
11
(+8,000 more lines)

$ cat list.txt  
2  
172363  
14  
17  
612851  
172414  
172418  
172419  
172424  
19  
72457  
(+ 150,000 more lines)

這樣我就可以重定向到一個新文件:

$ cat newfile.txt  
172363  
612851  
172418  
19   
72457  
(+8,000 more lines)

注意:此問題已被修改。以下 2017 年 5 月 5 日之前的答案基於list.txt格式為(例如第一行)>CLocus_2_Sample_(而不僅僅是數字 2)的輸入樣本 ( ),並且文件名是file.fa(not file.txt)。

根據修改後的數據,嘗試這樣的事情:

$ sed -nf <(sed 's/.*/&p/g' whitelist.txt) list.txt >newfile.txt

這將文件的條目whitelist.txt從 ie2轉換2p為指示外部sed列印該行2==> 等於sed -n '2p'==> 列印第二行。

的所有條目都會發生同樣的情況whitelist.txt,創建一個 sed 腳本(用程序替換提供外部 sed),包含2p5p7p等,並且列印 list.txt 的那些行。

替代方案:預處理 whitelist.txt:

sed 's/.*/&p/g' whitelist.txt >whitelist2.txt  #or sed -i '....' whitelist.txt to overwrite whitelist.txt
sed -nf whitelist2.txt list.txt # you can redirect output to >newfile.txt

引用自:https://unix.stackexchange.com/questions/361526