2013-02-22 2 views
4

Я хотел бы grep из всех экземпляров строк, которые начинаются с символов 'rs' (только из одного файла) и перетаскивают полную строку в новый файл. мне удалось получить счетчик экземпляров, но я не знаю, как получить их в новый файл:Grep все экземпляры строк, которые начинаются с определенных символов

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

Пример строки в файле:

1203823 forward efjdhgv rs124054t8 dhdfhfhs 
12045345 back efjdkkjf rs12445368 dhdfhfhs 

I просто хочу захватить строку rs и перенести ее в файл ne. Может кто-нибудь помочь мне с трубами? Я немного читал, но то, что я нашел, не очень полезно для меня. благодаря

+0

попробуйте это: 'grep -c '^ rs' this.txt> out.txt' – kev

+0

@kev Не могли бы вы объяснить, и почему вы положили его? – Stephopolis

+0

@kev, и это просто дало мне файл с 0 в нем. Он не нашел совпадений, хотя я знаю, что они есть – Stephopolis

ответ

7

Я хотел бы предложить что-то вроде этого:

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

\s ищет что-то, что начинается с любой пробельных символ

(rs\S+), а затем ищет строку, которая начинается с «RS» и последующая непробельным характером

Результатов еще есть белые места в нем, которые мы не хотим, чтобы мы " вырезать "их, прежде чем контент будет записан в новый файл.

+0

Большое спасибо за рабочее решение и объяснение его разных аспектов. – Stephopolis

1

Использование Perl:

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

Или с помощью tr и grep:

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

здесь ^ матчи начало строки.

+0

Отличное использование tr и grep! – ubuntudroid

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