
addhead | addtail | count | difflines | filter | head | joinlines | linelen | load | ofilter | perline | printloop | replace | run | runloop | snapto | sort | strings | tail | xed | xex | xreplace | Команда: ofilter sfk offilter in.xlsx -+шаблон
фильтровать и изменять текстовые строки из стандартного ввода или из файлов.
строки ввода могут иметь максимальную длину 4000 символов.
параметры выбора линии
-+pat1 -+pat2 включает строки, содержащие pat1 OR pat2
-and+pat1 -and+pat2 включают строки, содержащие pat1 И pat2
в любом порядке.
"-+pat1*pat2" включает строки, содержащие pat1 И pat2
в заданном порядке.
-ls+pat1 включает строки, начинающиеся с pat1
-le+pat1 -le+pat2 включает строки, оканчивающиеся на pat1 ИЛИ pat2
"-ls+pat1*pat2" включает запуск pat1 и наличие pat2
-!pat1 -!pat2 исключить строки, содержащие pat1 ИЛИ pat2
-ls!pat1 исключить строки, начинающиеся с pat1
-le!pat1 -le!pat2 исключить строки, оканчивающиеся на pat1 или pat2
-no-empty-lines исключить пустые строки
-no-blank-lines исключить строки, содержащие только пробелы
-inc[lude] от p1 до p2 включают только строки внутри блоков, окруженных
граничные линии, содержащие шаблоны p1 или p2
-inc- от p1 до p2 то же самое, но исключая граничные линии на выходе
-cut[-] p1 to p2 удалить блок строк от p1 до p2
-inc[-] "*" to p1 включает все от начала текста до маркера
-cut[-] p1 to "*" обрезать все от строки маркера до конца текста
-head=n читать только первые n строк текстовых файлов
-tail=n читать только последние n строк текстовых файлов
(до предела 100000 байт от конца файла)
-line=n читать только n-ю строку из ввода
-skipfirst=n пропустить первые n строк. предупреждает о жесткой упаковке.
-force принимать жестко обернутые строки с -skipfirst
-nocheck с inc, cut: игнорировать окончания без начала
-addmark txt с inc, cut: вставлять txt после каждого блока
-context=n выбрать n строк контекста вокруг строк попадания
-precon=5: синий цвет выбора контекста до или после хит-линий,
-postcon=5:cyan:--- синим или голубым, с разделителем "---".
-unique [-case] если одна и та же строка встречается дважды, оставить только первую.
по умолчанию сравнение текста не чувствительно к регистру.
-global-unique при фильтрации нескольких файлов одной командой,
тогда -unique применяется к строкам в том же файле, а -global-unique
применяется ко всем файлам. это кеширует текст всех файлов в
памяти и не может использоваться с очень большими файлами.
-сохранять шаблон после -unique: сделать исключение для строк
содержащие заданный шаблон, и сохранить их, даже если они избыточны.
-keep-empty, -keep-blank всегда оставляют пустые строки или строки с пробелами.
параметры обработки текста
применяется только после опций выбора строки.
-реп[кружево] _src_dest_
заменить строку src на dest. первый символ является символом-разделителем (например, _).
src нечувствителен к регистру. чтобы выбрать поиск с учетом регистра, скажите -case.
-lsrep[кружево], -lerep[кружево]
то же, что и -replace, но заменяет только один раз в начале или в конце строки.
-высокий [светлый] цветовой узор: выделение совпадающих частей внутри строк.
цвет: красный = темно-красный, красный = ярко-красный, зеленый, синий,
желтый, голубой, пурпурный, по умолчанию.
шаблон: например, "GET * HTTP/"
введите "sfk help colors", чтобы узнать больше о цветах.
-lshigh[светлый], -lehigh[светлый]
то же, что и -highlight, но только в начале или в конце строки.
-sep[arate] "; " -form "$col1 mytext $[-0n.nq]col2 ..."
разбить каждую строку на столбцы, разделенные любым символом, указанным после -sep,
затем переформатируйте текст в соответствии с определяемой пользователем маской, аналогичной printf.
при пропуске -sep вся строка упаковывается в столбец 1. если -spat был
указано, то -form также поддерживает шаблоны косой черты, такие как \t.
Google для «синтаксиса printf», чтобы получить более подробную информацию. пример:
-form "$40col1 $-3.5col2 $05qline $(10.10qcount+1000)"
переформатировать столбец 1 как правый, по крайней мере, с 40 символами, столбец 2 слева-
упорядочено не менее чем с 3 и не более чем с 5 символами, затем добавьте строку ввода
номер, заключенный в кавычки, выровненный по правому краю с 5 цифрами, с префиксом нулей,
затем номер выходной строки плюс 1000 в кавычках. ПРИМЕЧАНИЕ: некоторые примеры
может не работать в скрипте sfk, см. раздел «Распространенные ошибки» ниже.
добавление значений пока работает только с (q)line и (q)count.
-tabform "$col1 мой текст..."
разделить и переформатировать столбцы данных csv, разделенных табуляцией.
-stabform "$col3\t$col2\t$col1"
изменить порядок трех столбцов, разделенных вкладками, создав вывод с вкладками
используя шаблоны 's'lash, такие как \t
-utabform "#col1 мой текст..."
то же, что и -tabform, но с использованием синтаксиса в стиле unix для создания скриптов.
которые работают без изменений в Windows и Linux.
-uform "#40col1 #-3.5col2 #05qline"
то же, что и -form, но с использованием синтаксиса в стиле unix. сокращение от фильтра -upat.
-trim удаляет пробелы и символы табуляции в начале и в конце строки.
используйте -ltrim или -rtrim, чтобы обрезать только начало или конец строки.
-blocksep " " = обрабатывать блоки пробелов как одиночный разделитель пробелов.
-join[lines] соединить выходные строки, не печатать перевод строки.
-wrap[=n] перенос строк вывода рядом с шириной консоли [или в столбце n].
установите SFK_CONFIG=columns:n, чтобы определить или переопределить ширину консоли.
-toiso[=c] преобразует текст UTF-8 в формат ISO-8859-1. некоторые символы дальше
диапазон 8-битного кода будет сокращен до чего-то подобного, но
большинство из них заменяются точкой '.' или символом c.
-toutf преобразует текст ISO-8859-1 в UTF-8. если это делается с UTF-8
вводимый текст, то существующие последовательности UTF-8 будут уничтожены!
-tolower или -toupper преобразует az в нижний или верхний регистр.
условная обработка текста
-[ls/le]где шаблон -заменить | выделить | -сеп... -форма
заменить, выделить или переформатировать строки, соответствующие заданному шаблону.
все строки, не соответствующие шаблону, остаются неизменными.
-внутри шаблона -заменить _from_to_
заменить текст в части строки, соответствующей заданному шаблону.
остальной текст строки остается неизменным.
поддержка шаблонов
подстановочные знаки * и ? активны по умолчанию. добавьте -lit[eral], чтобы отключить.
шаблоны косой черты НЕ активны по умолчанию. добавить -spat для использования \t \q и т. д.
если вам нужен подстановочный знак *, но ТАКЖЕ хотите найти/заменить символы «*»:
добавить -spat, затем указать \* или \? найти/заменить '*' или '?' персонажи.
вместо того, чтобы все время вводить "sfk filter -spat -rep", вы можете использовать
короткая форма «sfk filt -srep». то же самое относится к -(s)sep, -(s)form и т. д.
единый синтаксис
начиная с sfk 1.5.4 вы также можете использовать -: -ls: -le: под окнами.
filter ... -uform или filter -upat ... -form использует # вместо $.
Переменные sfk против -tabform
с -upat под windows, sfk для linux, оба фильтра -tabform
и переменные sfk используют синтаксис #(имя) для вставки значений.
чтобы решить эту проблему, синтаксический анализ переменных не является строгим и может сохранить
неопределенные имена переменных как есть.
многострочные параметры в кавычках поддерживаются в скриптах
с использованием полной отделки. введите "скрипт sfk" для деталей.
дополнительные параметры
-case сравнение с учетом регистра. по умолчанию нечувствителен к регистру.
для дополнительных опций см.: sfk help nocase
-lit[eral] обрабатывать подстановочные знаки * и ? как обычные символы (подробнее читайте выше).
-arc XE: включить содержимое архивов .zip, .jar, .tar и т. д.
как можно глубже, включая вложенные архивы.
XD: demo прочитает первые 1000 байт каждой записи.
-qarc быстро читать архивы верхнего уровня, но не вложенные.
-utfout сохранить необработанную кодировку UTF-8 на выходе, чтобы использовать ее
с дальнейшими командами, требующими данных UTF-8.
-verbose показать имена всех файлов, которые сканируются в данный момент.
с wfilter: сообщите текущие настройки прокси, если они есть.
-write не выводить вывод на консоль, а перезаписывать входные файлы.
будут перезаписаны только файлы с фактическими изменениями текста.
эту функцию можно использовать только с обычными файлами ASCII, а не с
двоичные файлы, такие как .doc, .xls. см. также «заменить sfk».
-write -to msk не перезаписывать входные файлы, а сохранять по маске msk,
например tmp\$file . сохраняет только измененные файлы. сказать - написать все
записать все файлы, в том числе и без изменений.
-memlimit=mb при использовании -write вывод кэшируется в ограниченной памяти
до 300 мб. используйте эту опцию для расширения, например -memlimit=400
-yes -write имитирует по умолчанию. добавьте -yes, чтобы действительно записать изменения.
-snap обнаружить snap-файлы и вывести список имен подфайлов, имеющих текстовые совпадения.
-snapwithnames То же, что и -snap, но при фильтрации включаются имена подфайлов.
-nofile[names] не перечислять имена файлов, не делать отступ текстовых строк.
-subnames with offilter: вставьте имена подфайлов листа .xlsx.
-count, -cnt предшествовать всем строкам результатов по счетчику строк вывода
-lnum предшествовать всем строкам результата по номеру входной строки
-hidden включает скрытые и системные файлы.
-noinfo не предупреждать о выборе строки в сочетании с -write.
-noop \" нет операции, взять параметр \" но ничего не делать.
может помочь, если ваша оболочка (Windows) неправильно считает цитаты.
-hitfiles, если следует другая команда (например, +run или +ffilter),
передать список файлов, содержащих хотя бы одно попадание.
-nocconv отключить преобразование умляутов и символов ударения во время
вывод в консоль. "sfk help opt" для получения подробной информации.
-justrc ничего не выводить, просто установить код возврата в соответствующих строках.
-upat синтаксис в стиле unix с -form, используя # вместо $
-timeout=n с wfilt: ждать веб-данных до n мс.
список возможных источников ввода
из стандартного ввода: введите x.txt | фильтр sfk -+шаблон
из одного входного файла: sfk filter x.txt --+шаблон
текст из связанной команды: sfk list mydir .txt +filter --+pattern
напрямую из многих файлов: sfk filter --+pattern -dir mydir -file .txt
из многих файлов, по цепочке: sfk list mydir .txt +filefilter --+pattern
в общем, всякий раз, когда вам нужно убедиться, что содержимое файла (а не
имена файлов) обрабатываются, лучше говорить "filefilter" или "ffilt".
поддержка веб-доступа
поиск слова "html" в URL-адресе http можно выполнить следующим образом:
фильтр sfk http://192.168.1.100/ --+html
фильтр sfk http://.100/ -+html
sfk wfilt .100 --+html
sfk web .100 +фильтр --+html
коды возврата для пакетных файлов
0 нормальное выполнение, совпадающие строки не найдены.
1 нормальное выполнение, найдены совпадающие строки.
с -write: возвращает rc 1, только если были записаны какие-либо изменения.
>1 произошла серьезная ошибка. см. «sfk help opt» для опций обработки ошибок.
распространенные ошибки
при использовании filter -form в скриптах sfk выражения вроде $10.10col1
может конфликтовать с параметрами скрипта $1 $2 $3. чтобы решить это, используйте скобки
например $(10.10col1), или "метка sfk... -prefix=%", или -uform.
псевдонимы
sfk ... +getcol n получить столбец n текста, разделенного пробелами.
то же, что +filter -blocksep " " -form $coln
sfk ... +tabcol n получить столбец n текста, разделенного табуляцией.
то же, что +filter -stabform $coln
смотрите также
--- команды с открытым исходным кодом ---
sfk xfind поиск подстановочного текста в текстовых файлах
sfk поиска в офисных файлах .docx .xlsx .ods
sfk xfindbin поиск подстановочного текста в текстовых/двоичных файлах
sfk xhexfind поиск в текстовом/двоичном файле с выводом шестнадцатеричного дампа
sfk Extract извлекает данные подстановочных знаков из текстовых/бинарных файлов
sfk фильтрует фильтр и редактирует текст с помощью простых подстановочных знаков
sfk найти поиск фиксированного текста в текстовых файлах
sfk findbin ищет фиксированный текст в текстовых/бинарных файлах
sfk hexfind ищет фиксированный текст в бинарных файлах
sfk replace заменить фиксированный текст в текстовых/бинарных файлах
--- бесплатные команды ---
инструмент sfk view GUI для поиска текста по мере ввода
--- Коммерческие команды xe ---
sfk replace заменить фиксированный текст с высокой производительностью
sfk xreplace заменить подстановочный знак в текстовых/двоичных файлах
sfk help xe о SFK XE и xreplace с выражениями SFK.
sfk getvar быстрый однострочный поиск в многострочной переменной
sfk difflines показывает разные строки между двумя файлами
sfk help unicode о функциях преобразования широких символов
остерегайтесь командных символов оболочки.
чтобы найти или заменить текст, содержащий пробелы или специальные символы, такие как <>|!&?*
вы должны добавить кавычки "" вокруг параметров, иначе оболочка уничтожит вашу команду.
он разбивает команду на части и дает SFK только одну часть, вызывая ошибки.
поэтому -replace _ _ _ нужно писать так: -replace "_ _ _"
в файле .bat или .cmd процент % должен быть экранирован как %% даже
внутри строк в кавычках: sfk echo -spat "процент %% является процентом \x25"
смотрите также
sfk filter для большего количества примеров фильтрации
Примеры
sfk отфильтровать в.docx -+foo
получить все строки из in.docx, содержащие foo
sfk offilt in.xlsx --+apple -stabform $col2\t$col3
получить строки таблицы, содержащие «яблоко»,
затем используйте только столбцы 2 и 3. |
![]() |