7

我想 grep 以字符 'rs' 开头的所有字符串实例(仅来自一个文件)并将完整的字符串传送到一个新文件中。我设法获得了实例的数量,但我不知道如何将它们放入新文件中:

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

文件中的一行示例如下:

1203823    forward   efjdhgv   rs124054t8 dhdfhfhs
12045345    back   efjdkkjf   rs12445368 dhdfhfhs

我只想抓取 rs 字符串并将其移动到 ne 文件中。有人可以帮我解决管道问题吗?我阅读了一下,但我发现对我来说并不是特别有帮助。谢谢

4

5 回答 5

8

我建议这样的事情:

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

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

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

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

于 2013-02-22T12:23:33.060 回答
1

使用 Perl:

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

或使用trand grep

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

这里^匹配一行的开头。

于 2013-02-22T05:58:37.513 回答
1

超级旧,但想补充一下。@kev grep -c '^rs' 将转储以 rs 开头的所有行的计数,而这些行都没有。

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

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

这将对文件进行分类,提取每行的第四个字段,并且只提取以 rs 开头的行

于 2015-07-07T21:53:29.023 回答
0
perl -F -lane '$a=$_;for(@F){if(/^rs/){print $a;last}}' your_file

或者

perl -lne 'print if(/[\s]rs/ || /^rs/)' your_file
于 2013-02-22T06:28:09.780 回答
0

使用 Grep 命令:

grep -w -o "rs[0-9a-z]*"
于 2013-02-22T11:36:11.190 回答