У меня есть папка с несколькими TXT-файлами. Я хочу проверить несколько строк в этих текстовых файлах и предоставить результат как out.txt с 5 строками выше и 5 строками ниже строки.Perl Script: поиск строки из папки с несколькими файлами
ответ
, если вы настаиваете на PERL Oneliner;
perl -n -e 'if (/searchStringHere/) {print "\n\n\n\n\n$_\n\n\n\n\n"}' *.txt
Если решение Grep работает для вас, я считаю, что это более элегантно ...
обновление
это просто поразило меня, что вы могли бы быть пользователем окна, так что вы не Grep ...
этот код не был протестирован, так как я не установлен Perl на этой машине, но это должно работать: # yourperl/Perl
! 10$flag, $l1, $l2, $l3, $l4, $l5, $l6;
$cnt = 5;
$file = shift;
open("$file") || die "can't open $file\n";
while (<>) {
$l1 = $l2; # starting with reserving the lines for back print
$l2 = $l3;
$l4 = $l5;
$l5 = $l6;
$l6 = $_;
if (/your string here/) {
$cnt = 5;
print ($l1$l2$l3$l4$l5$l6);# print line + 5 prev lines
next
}
if ($cnt >0) { # print the next 5 lines
print $l6;
$cnt--;
}
}
Обратите внимание: что если вы собираетесь снова и снова находить, вам нужен только один набор из \ n \ n \ n \ n \ n - другой будет сгенерирован следующим результатом поиска. если вы оставите его как есть, у вас будет 10 строк между двумя результатами в середине вашего списка поиска. – user2141046
Как я понимаю, OP хочет контекст вокруг ключевого слова для поиска. Не пустые строки. – Birei
о, поэтому я неправильно понял, что он имел в виду. в этом случае grep -C отлично справляется – user2141046
Это легче сделать с Grep:
grep -A 5 -B 5 'searchstring' *.txt > a.out
С Perl :-)
use strict;use warnings;
`grep -A 5 -B 5 'searchstring' *.txt > a.out`;
die "Something went wrong: $!" if $?;
- 1. Запуск скрипта с несколькими файлами (нумерованный) с помощью Shell Script
- 2. R: Загрузка данных из папки с несколькими файлами
- 3. Обмен файлами между несколькими процессами [Perl]
- 4. аргументы командной строки с несколькими выходными файлами
- 5. Как удалить дублированные строки с несколькими файлами?
- 6. Streamreader с несколькими файлами
- 7. Изображение Three20 из папки с файлами
- 8. Чтение данных с несколькими файлами с несколькими файлами
- 9. Разделение строки с несколькими пробелами с perl?
- 10. SqlBulkCopy с несколькими файлами
- 11. пересечение с несколькими файлами
- 12. Открытые папки с JQuery из CSS Script
- 13. Место функции с несколькими файлами
- 14. Поиск файла из папки
- 15. Какие команды использовать при использовании grep, когда нужно искать текст внутри папки с несколькими файлами PHP?
- 16. Запуск Perl Script из JavaFx
- 17. Безопасность папки с Android-файлами
- 18. найти папки с исполняемыми файлами
- 19. Проверка наличия папки с файлами
- 20. Создайте папки iCloud с файлами
- 21. , работающий с несколькими файлами пользователей на сервере
- 22. Makefile с несколькими исполняемыми файлами
- 23. Python: Nosetests с несколькими файлами
- 24. Hg diff с несколькими файлами
- 25. reactjs, сообщающий между несколькими файлами
- 26. HTML-вызов Perl Perl Calling Script Script SSH не работает
- 27. Поиск строки в подпрограмме с perl PPI
- 28. Perl script - Confusing error
- 29. Как обрабатывать проект с несколькими файлами tsconfig.json?
- 30. проблема с несколькими файлами чтения
использовать grep с опцией '-C 5' – perreal
как хотите. Perl: [ack] (http://beyondgrep.com/) – salva
Добро пожаловать в SO. Здесь возьмите [тур] (http://stackoverflow.com/about). –