я не могу придумать приложение, которое позволит мне сделать это.

у меня есть документ с сотнями строк, я хочу искать с помощью регулярного выражения и выделять жирным шрифтом или курсивом. У меня нет проблем с регулярным выражением или чем-то еще, просто не могу придумать приложение, которое позволяет это.

я обычно grep/sed/awk или notepad++ в Windows, но это, конечно, не позволяет мне выделять результаты. grep делает, но мне нужно печатать также ...

3 ответа3

0

Если вы хотите импортировать свой текст в Microsoft Word для этой цели, и если возможности поиска в Word достаточно мощны для вас, вы можете сделать это с помощью Word.  (Word может искать глобальные символы, но не настоящие регулярные выражения.)  В диалоговом окне «Найти и заменить» нажмите «Еще >>», затем щелкните в поле «Заменить на», затем нажмите «Формат» -> «Шрифт» и установите шрифт, который вы хотите применить к строкам, которые найдены:

            Найти и заменить шрифтом

0

Вы работаете в Windows, я не уверен, что LPT: может быть сделан для понимания старых последовательностей команд в стиле «ANSI.SYS» или подобных «escape-последовательностей» в тексте / документах, которые будут напечатаны.

Кроме того: Вы не сказали, являются ли вы документами TEXT-FILE или WORD.

Вот пример того, как использовать sed чтобы "0d" и "0a" (CR и LF) выделялись в чистом тексте в оболочке Linux bash. Примечание: od с указанными параметрами печатает значения байтов в шестнадцатеричном виде и их представление в ascii .

$ cat firstfile
1. The quick brown fox jumped over the lazy dog.

$ od -t x1z -w24 firstfile | sed -re 's/(0a)/\x1b[1m\1\x1b[m/g;s/(0d)/\x1b[1m\1\x1b[m/g'
0000000 31 2e 20 54 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 66 6f 78 20 6a  >1. The quick brown fox j<
0000030 75 6d 70 65 64 20 6f 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 2e  >umped over the lazy dog.<
0000060 0a                                                                       >.<
0000061

примечание: последний "0а" должен быть жирным шрифтом, здесь этого не происходит, кажется невозможным.

\x1b[1m и \x1b[m которые вы видите встроенными, являются последовательностями, необходимыми для того, чтобы сделать терминал Ubuntu жирным шрифтом, а затем выключить его. Они поступают из базы данных terminfo и могут быть сгенерированы более широко с помощью tput bold и tput sgr 0 как показано в:

$ tput bold | od -t x1z -w24 
0000000 1b 5b 31 6d                                                              >.[1m<
0000004

$ tput sgr 0 | od -t x1z -w24 
0000000 1b 28 42 1b 5b 30 6d                                                     >.(B.[0m<
0000007
0

Пытаться

$ export GREP_COLORS='ms=01;33'
$ grep -C 1000 '\<abc\>' file.txt

См. Справку и примеры команд grep для Linux и Unix

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .