Grep以某些字符开头的所有字符串实例

时间:2013-02-22 04:42:33

标签: linux bash grep cat

我想要查看以字符“rs”开头的所有字符串实例(仅来自一个文件),并将完整字符串传递给新文件。 我设法获得了实例的计数,但我不知道如何将它们放入新文件中:

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

文件中一行的示例是:

1203823    forward   efjdhgv   rs124054t8 dhdfhfhs
12045345    back   efjdkkjf   rs12445368 dhdfhfhs

我只想抓住rs字符串并将其移动到ne文件中。 有人可以用管道帮助我吗?我读了一下,但我找到的对我来说并不是特别有帮助。 感谢

5 个答案:

答案 0 :(得分:7)

我建议这样的事情:

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

\s查找以任何空白字符开头的内容

(rs\S+)然后搜索以“rs”开头的字符串,后跟任何非空白字符

结果中仍然有空格,这是我们不想要的,所以我们在将内容写入新文件之前“剪切”它们。

答案 1 :(得分:1)

使用Perl:

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

或使用trgrep

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

此处^匹配行的开头。

答案 2 :(得分:1)

超级老,但想补充一点。 @kev grep -c'^ rs'会转储所有以rs开头的行的计数。

要使用大多数标准二进制文件相对容易地执行此操作,您可以使用:

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

这会捕获文件,拉出每行的第四个字段,只拉出以rs

开头的行

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

使用Grep命令:

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