2014-03-26 41 views
-2

我在Linux世界相當新,我需要你的幫助。 我需要一個代碼來搜索文本文件中特定位置的特定字符。 即搜索在特定位置的特定字符

文件sequences.txt看起來是這樣的:

ACGTCAGTCAG**T**CAGCATC**G**ATCGACTACGACCGTAGCTAGCTATACGACT**G**ATCAGCTACGATCAGCTACGATCAGCTACGAT 
ACGTCAGTCAG**A**CAGCATC**C**ATCGACCATGCTAGCCGTACGATTAGCGACT**C**ATCAGCTACGATCAGCTACGATCAGCTACGAT 
ACGTCAGTCAG**T**CAGCATCATCGACTACGACTACGATCGATCGATCGGACT**G**ATCAGCTACGATCAGCTACGATCAGCTACGATG 
ACGTCAGTCAG**A**CAGCATC**G**ATCGACTACGACGATCGATCGATCTACGACT**C**ATCAGCTACGATCAGCTACGATCAGCTACGAT 

我想是拆分在不同的輸出文件分組含有相同的特定charactrs平等線數據集。

希望有人能幫助我, 所有最好的

+3

那麼你希望的輸出應該如何? – fedorqui

回答

0

要在42位搜索「富」:

egrep '^.{42}foo' 

你可以像你輸入這個多次運行命令:

egrep '^.{42}foo' inputfile.txt > lineswithfoo.txt 
egrep '^.{42}bar' inputfile.txt > lineswithbar.txt 
... 

或作爲一個循環:

for pattern in foo bar qux; do 
    egrep "^.{42}$pattern" inputfile.txt > lineswith$pattern.txt 
done 
0

awk子串操作在這裏可能很有用。沿着這些線的東西:

awk '{ x=substr($0, 42, 3); print > "output" x ".txt"}' 

這將採取的每一行的3個字符的子起始於位置42(基於0的索引,記住),並從該子串形成一個輸出的文件名「outputXYZ.txt」 ,然後將該行添加到它。