Страница 2 из 5
Добавлено: Вт дек 21, 2010 16:25
qwerty
Я уезжал, не успел закончить, сейчас продолжаю.
Продолжил с того, на чем остановился и сразу получилось.
Tol!k писал(а):Код: Выделить всё
ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt
Работает как надо.
Всем большое спасибо за участие! И с наступающем.
Добавлено: Ср дек 22, 2010 00:49
qwerty
А где можно посмотреть, как правильно писать то, что будет удалено при исполнение
Код: Выделить всё
ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt
Мне нужно убирать помимо пробела все английские буквы, цифры и символы <>:;="/.-'
Пытаюсь прописать в квадратных скобках, а не получается.
Добавлено: Ср дек 22, 2010 20:20
qwerty
С предыдущим вопросом разобрался. Получилось.
Еще оказалось, что в некоторых файлах конец строки заканчивается ненужными символами, которые идут с точкой. Соответственно удаление происходит до точки без учета этих ненужных символов. Можно ли используя команду, приведенную Tol!k'ом сделать так: если в конце строки перед точкой идут цифры, символы или англ. буквы, то после точки добавлять определенные символы. А если до точки идут русские буквы, то ничего не делать кроме удаления мусора, как сейчас.
Какая часть этой команды отвечает за конец строки?
Код: Выделить всё
ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt
Добавлено: Пт дек 24, 2010 20:02
Tol!k
Попробуй
ssed.exe -i.old -r "s/(\B[^А-я]*\.)$/\1POSTFIX/" *.txt
= если последнее слово не кончается кириллицей, то добавить POSTFIX
*Кодировка символов А-я в команде должна совпадать с оной в файлах.
Про регулярные выражения можно прочитать в справке ТС.
Код: Выделить всё
Вот список наиболее важных метасимволов:
^ Начало строки.
$ Конец строки.
. Любой символ.
\w Алфавитно-цифровой символ или знак подчёркивания '_'.
\W Дополнение к \w, т.е. любой символ, кроме алфавитно-цифровых и подчёркивания.
\d Цифра.
\D Дополнение к \d (не цифра).
\s Разделитель между словами (пробел, табуляция и пр.).
\S Дополнение к \s (любой символ, кроме разделителей).
\b Указывает границу слова.
\B Указывает, что данная позиция не является границей слова.
Добавлено: Сб дек 25, 2010 17:12
qwerty
Спасибо, Tol!k. Работает.
Сейчас вроде больше ничего не надо. Т.е. надо, но самому много время уйдет делать.
Хочу в файлы, в конец вставлять строку кода, которая будет браться из подготовленного файла. Т.е. есть пять файлов и один подготовленный файл с пятью строками кода. Надо из подготовленного файла брать строку и вставлять ее в один из пяти файлов. Код который надо вставлять это код видео с youtube.
Как total commander при групповом переименовывание может брать названия для файлов из файла.
Есть есть решение, буду рад ссылки.
Добавлено: Вс дек 26, 2010 04:56
Tol!k
qwerty писал(а):Хочу в файлы, в конец вставлять строку кода, которая будет браться из подготовленного файла.
Отдельной строкой или дописать к существующей?
Примеры имён файлов и кода для вставки...
Добавлено: Вс дек 26, 2010 15:49
qwerty
Tol!k писал(а):Отдельной строкой или дописать к существующей?
Как лучше, я не знаю. Если без разницы, то лучше отдельной.
Tol!k писал(а):Примеры имён файлов и кода для вставки...
1.txt
2.txt
3.txt
...
подготовленный файл с кодами - kod.txt
код такой
Код: Выделить всё
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/Hv8gqj3kzg4?fs=1&hl=ru_RU"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Hv8gqj3kzg4?fs=1&hl=ru_RU" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
Добавлено: Вс дек 26, 2010 16:24
Tol!k
Отдельной строкой проще.
Код: Выделить всё
@echo off &chcp 1251 >nul
setlocal enableextensions enabledelayedexpansion
set "str=kod.txt"
set /a cnt=1
for /f "usebackq delims=" %%a in ("%str%") do (
echo.%%a>>!cnt!.txt
set /a cnt+=1
)
Добавлено: Вс мар 06, 2011 20:56
Jonmey
Кто-нибудь знает, как заменить в бинарном файле в искомой строке подстроку? То есть, речь идет от патчере работающем в режиме s&r -ищется заданный паттерн бинарной строки и заменяется ее часть. Таких строк м.б. несколько и их вхождений в каждом файте - тоже.
Однако все обрабатываемые файлы одного типа и их расширения м.б. заданы маской.
Необходимо, чтобы это решение можно было прикрутить на кнопку ТС стандартным образом для обработки, или выделенных файлов, или всех файлов в папке.
Добавлено: Вс мар 06, 2011 21:36
Tol!k
Конкретизируйте.
Добавлено: Вс мар 06, 2011 21:46
Flasher
Для выделенных файлов скрипт Batya как раз и решает описанное. А маску можно задать в ТС на выделение (cm_SelectFiles), это не проблема.
Добавлено: Вс мар 06, 2011 22:40
Jonmey
Например, в папке лежит несколько файлов вида
В них нужно найти заменить бинарные строки, типа:
Код: Выделить всё
D1 F2 F0 EE EA E0 5F 31 5F EA EE F2 EE F0 F3 FE 5F E8 F9 E5 EC ?? ?? ?? ?? ??
(где ?? - любой байт)
на
Код: Выделить всё
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? D1 F2 F0 EE EA
(где ?? означает, что соответствующий байт отстается неизменным при замене).
Таких пар замен несколько, и их вхождений в каждом файле тоже может быть несколько.
Добавлено: Вс мар 06, 2011 23:03
Flasher
Стоило сразу указать на шестнадцатеричный формат представления. Я бы пока
этой прогой воспользовался.
Добавлено: Вс мар 06, 2011 23:26
Jonmey
Стоило сразу указать на шестнадцатеричный формат представления.
Кто-нибудь знает, как заменить в бинарном файле в искомой строке подстроку?
Я бы пока этой прогой воспользовался.
Нужен способ как это сделать из командной строки, то есть без гуишного фейса, поскольку речь идет не об одном файле или группе файлов, а о мнгочисленных файлах разбросанных в разных местах, и если пользоваться каждый раз оконной программой (коих миллион), то никаких, ни сил, ни терпения не хватит.
Добавлено: Вс мар 06, 2011 23:38
Flasher
Jonmey
Бинарность файла не указывает на то, в каком формате нужно обрабатывать этот файл.
Что касаемо группы файлов, то не вижу проблем - жмётся Ctrl+O и вперёд. Причём тут гуишность...
Миллион? Да хотя бы указание на парочку других подобных (Asc + Dec + Hex) уже станет для меня прозрением. Вперёд.