2013-02-22 246 views
4

我希望將所有以字符'rs'開頭(僅來自一個文件)的字符串實例化並將全部字符串管道化爲新文件。 我設法實例的計數,但我不知道如何讓他們到新文件:Grep以特定字符開頭的字符串的所有實例

grep -c rs < /home/Stephanie/this.txt 
698572 

文件中一行的一個例子是:

1203823 forward efjdhgv rs124054t8 dhdfhfhs 
12045345 back efjdkkjf rs12445368 dhdfhfhs 

我只想抓住rs字符串並將其移動到ne文件。 有人可以幫助我與管道?我讀了一下,但是我發現對我來說並不是特別有用。 感謝

+0

試試這個:'grep -c'^ rs'this.txt> out.txt' – kev 2013-02-22 04:45:12

+0

@kev你能解釋一下^和你爲什麼把它放在''嗎? – Stephopolis 2013-02-22 04:48:51

+0

@kev,並只給了我0文件中的文件。它沒有找到任何匹配,但我知道他們在那裏 – Stephopolis 2013-02-22 04:55:08

回答

7

我建議是這樣的:

egrep -o "(\s(rs\S+))" data.txt | cut -d " " -f 2 > newfile.txt 

\s尋找的東西,與任何空白開始字符

(rs\S+),然後查找其中以「RS」開始,接着是任何非空白字符

結果還是有它的白空間,這是我們不希望一個字符串,所以我們「剪切「出來,然後將內容寫入新文件。

+0

非常感謝你的工作解決方案和對不同方面的解釋。 – Stephopolis 2013-02-22 14:28:27

1

使用Perl:

perl -lane 'print $1 while (/\b(rs\w+)/g)' input 

或者使用trgrep

tr '[ \t]' '[\n\n]' < input | grep '^rs' 

這裏^比賽開始行。

+0

tr和grep的大量用法! – ubuntudroid 2014-09-29 20:28:13

0
perl -F -lane '$a=$_;for(@F){if(/^rs/){print $a;last}}' your_file 

perl -lne 'print if(/[\s]rs/ || /^rs/)' your_file 
0

使用grep命令:

grep -w -o "rs[0-9a-z]*" 
1

超級老,但想補充到這一點。 @kev grep -c'^ rs'會將所有以rs開頭的行都轉儲出來,而這些行都沒有。

要做到這一點與大多數標準二進制相對容易,你可以使用:

cat text.file | awk {'print $4'} | grep '^rs' 

這將貓咪的文件,拔出每行的第四場,只有扳指與RS啓動線

相關問題