2013-02-22 46 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启动线

相关问题