[英]Grep value from multiple files
我有一個名為A.nam的文件(一萬行),帶有一些坐標,即
K6662028
K6703908
K6605560
我必須從九個列(B1.txt .... B900.txt)的900個文件中復制它。 我希望在所有文件中搜索這些坐標(我已經知道所有文件都包含這些坐標),然后希望對三個感興趣的列進行grep。 我的一根襯紙可以很好地處理一個文件,但對於900個文件,我想我必須循環播放,但是如何?
我的一線是
cat A.nam |xargs -i grep -P '{}' B1.txt |awk '{print $1"\t"$2"\t"$9}' > test.txt
如果有人可以提供幫助,我將不勝感激。
您的一支班輪工作不錯。 您可以對其進行一個小的更改,它將很好地工作。
當給定多個文件時, cat
命令將它們一個接一個地分配到stdout,因此cat ab
會將cat
文件a
后面跟文件b
,就像它們是一個文件一樣。
舉例來說,如果我有200個文件,這些文件都喜歡1001.out
, 1002.out
, 1003.out
... 1200.out
我可以cat
所有的人都像這樣: cat 1*.out
因此,例如,如果您的文件在開頭都是B,在結尾是.txt的某種組合,例如B1.txt
... B900.txt
示例,則您的班輪可以更改為:
cat B*.txt |xargs -i grep -P '{}' B1.txt |awk '{print $1"\\t"$2"\\t"$9}' > test.txt
grep
可以使用包含模式的文件名-f
選項。 我想你要
grep -F -w -f A.nam B*.txt | awk -v OFS="\t" '{print $1, $2, $9}' > test.txt
我在想您要-F
指定您的模式是固定字符串而不是正則表達式,並且-w
強制字符串匹配整個單詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.