Щоб зібрати 20 символів після і перед матчем


15

У мене проблема, що після матчу я отримую занадто багато інформації

grep -RnisI --color=auto "pseudomonas" *

Я хочу отримати лише 20 символів або 10 слів після і перед матчем.

Який правильний інструмент зробити таке?


1
Ваш набір варіантів трохи дивний, коли скаржитеся на занадто багато інформації. Ви хочете, щоб один рядок після та перед матчем відображався ( -A1і -B1відповідно), але це занадто багато? Де саме ви хочете, щоб ваш результат був обрізаний?
Андреас Візе

1
Чи можете ви навести приклад та вихід, який ви очікуєте?
Рамеш

Я змінив команду, тестую в Ubuntu 13.10, дайте мені знати, чи працює вона для вас. У мене є варіант grep та egrep
Ерік,

Відповіді:


24
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

Це має зробити це за вас

Оновлення:

Якщо ви не хочете кішку, ви можете просто використати grep з файлом як параметр:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

Крім того, -P використовує Perl Regex, який, як повідомляє сторінка man, є експериментальним, якщо ви хочете уникнути цього прапора, ви можете просто використовувати egrep:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

Який у вас потворний тестовий файл;)
Ouki

Решта файлу насправді корисна, це частина багаторядкового коментаря посеред Схеми, яку потрібно було виключити, не порушуючи наш аналізатор, це було просто гарною лінією, щоб спробувати це.
Ерік

Оскільки в одному з моїх файлів встановлено 755, але я бачу, як cat не може бути ідеальним для HTML-файлу, ви можете спробувати передати ім'я файлу grep як параметр, дивіться мою редагування.
Ерік

Я маю на увазі під 777 файлами, що у вас є 777 копій різних файлів, а не справа. Я запускаю $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$. Команда залишається там нескінченною і нічого не робить. Це потім, здається, працює $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. Те саме з рекурсією та залежністю від випадків. Однак це дуже повільно. Я думаю, це не повинно бути таким повільним. Греп був значно швидшим.
Лео Леопольд Герц 준영

якщо котинг не працює, ви завжди можете просто помістити його у файл, додавши > results.txtдо кінця своєї команди, але він не скаже вам, у якому файлі ви його знайшли.
Ерік,

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

Припускає, що збіги та їхній контекст не перетинаються, а назви файлів не містять pseudomonas.

Також зауважте, що повідомлені номери рядків - це ті, хто починається з контексту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.