簡體   English   中英

來自多個文件的Grep值

[英]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.out1002.out1003.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM