View previous topic :: View next topic |
Author |
Message |
qwerty
Joined: 26 May 2009 Posts: 22
|
(Separately) Posted: Tue Dec 21, 2010 17:25 Post subject: |
|
|
Я уезжал, не успел закончить, сейчас продолжаю.
Продолжил с того, на чем остановился и сразу получилось.
Tol!k wrote: | Code: | ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt |
|
Работает как надо.
Всем большое спасибо за участие! И с наступающем. |
|
Back to top |
|
|
qwerty
Joined: 26 May 2009 Posts: 22
|
(Separately) Posted: Wed Dec 22, 2010 01:49 Post subject: |
|
|
А где можно посмотреть, как правильно писать то, что будет удалено при исполнение
Code: | ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt |
Мне нужно убирать помимо пробела все английские буквы, цифры и символы <>:;="/.-'
Пытаюсь прописать в квадратных скобках, а не получается. |
|
Back to top |
|
|
qwerty
Joined: 26 May 2009 Posts: 22
|
(Separately) Posted: Wed Dec 22, 2010 21:20 Post subject: |
|
|
С предыдущим вопросом разобрался. Получилось.
Еще оказалось, что в некоторых файлах конец строки заканчивается ненужными символами, которые идут с точкой. Соответственно удаление происходит до точки без учета этих ненужных символов. Можно ли используя команду, приведенную Tol!k'ом сделать так: если в конце строки перед точкой идут цифры, символы или англ. буквы, то после точки добавлять определенные символы. А если до точки идут русские буквы, то ничего не делать кроме удаления мусора, как сейчас.
Какая часть этой команды отвечает за конец строки?
Code: | ssed.exe -i.bak -r "s/^[ \[\$]*(.*\.)[^\.]*$/YOURPREFIX\1/" *.txt |
|
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Fri Dec 24, 2010 21:02 Post subject: |
|
|
Попробуй ssed.exe -i.old -r "s/(\B[^А-я]*\.)$/\1POSTFIX/" *.txt
= если последнее слово не кончается кириллицей, то добавить POSTFIX
*Кодировка символов А-я в команде должна совпадать с оной в файлах.
Про регулярные выражения можно прочитать в справке ТС.
Code: | Вот список наиболее важных метасимволов:
^ Начало строки.
$ Конец строки.
. Любой символ.
\w Алфавитно-цифровой символ или знак подчёркивания '_'.
\W Дополнение к \w, т.е. любой символ, кроме алфавитно-цифровых и подчёркивания.
\d Цифра.
\D Дополнение к \d (не цифра).
\s Разделитель между словами (пробел, табуляция и пр.).
\S Дополнение к \s (любой символ, кроме разделителей).
\b Указывает границу слова.
\B Указывает, что данная позиция не является границей слова.
|
|
|
Back to top |
|
|
qwerty
Joined: 26 May 2009 Posts: 22
|
(Separately) Posted: Sat Dec 25, 2010 18:12 Post subject: |
|
|
Спасибо, Tol!k. Работает.
Сейчас вроде больше ничего не надо. Т.е. надо, но самому много время уйдет делать.
Хочу в файлы, в конец вставлять строку кода, которая будет браться из подготовленного файла. Т.е. есть пять файлов и один подготовленный файл с пятью строками кода. Надо из подготовленного файла брать строку и вставлять ее в один из пяти файлов. Код который надо вставлять это код видео с youtube.
Как total commander при групповом переименовывание может брать названия для файлов из файла.
Есть есть решение, буду рад ссылки. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Dec 26, 2010 05:56 Post subject: |
|
|
qwerty wrote: | Хочу в файлы, в конец вставлять строку кода, которая будет браться из подготовленного файла. | Отдельной строкой или дописать к существующей?
Примеры имён файлов и кода для вставки... |
|
Back to top |
|
|
qwerty
Joined: 26 May 2009 Posts: 22
|
(Separately) Posted: Sun Dec 26, 2010 16:49 Post subject: |
|
|
Tol!k wrote: | Отдельной строкой или дописать к существующей? |
Как лучше, я не знаю. Если без разницы, то лучше отдельной.
Tol!k wrote: | Примеры имён файлов и кода для вставки... |
1.txt
2.txt
3.txt
...
подготовленный файл с кодами - kod.txt
код такой
Code: | <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> |
|
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Dec 26, 2010 17:24 Post subject: |
|
|
Отдельной строкой проще.
Code: | @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
)
|
|
|
Back to top |
|
|
Jonmey
Joined: 27 Sep 2010 Posts: 42
|
(Separately) Posted: Sun Mar 06, 2011 21:56 Post subject: |
|
|
Кто-нибудь знает, как заменить в бинарном файле в искомой строке подстроку? То есть, речь идет от патчере работающем в режиме s&r -ищется заданный паттерн бинарной строки и заменяется ее часть. Таких строк м.б. несколько и их вхождений в каждом файте - тоже.
Однако все обрабатываемые файлы одного типа и их расширения м.б. заданы маской.
Необходимо, чтобы это решение можно было прикрутить на кнопку ТС стандартным образом для обработки, или выделенных файлов, или всех файлов в папке. |
|
Back to top |
|
|
Tol!k
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sun Mar 06, 2011 22:36 Post subject: |
|
|
Конкретизируйте. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Mar 06, 2011 22:46 Post subject: |
|
|
Для выделенных файлов скрипт Batya как раз и решает описанное. А маску можно задать в ТС на выделение (cm_SelectFiles), это не проблема. |
|
Back to top |
|
|
Jonmey
Joined: 27 Sep 2010 Posts: 42
|
(Separately) Posted: Sun Mar 06, 2011 23:40 Post subject: |
|
|
Например, в папке лежит несколько файлов вида
Code: | file1.ext
file2.ext
file3.ext |
В них нужно найти заменить бинарные строки, типа:
Code: | D1 F2 F0 EE EA E0 5F 31 5F EA EE F2 EE F0 F3 FE 5F E8 F9 E5 EC ?? ?? ?? ?? ?? |
(где ?? - любой байт)
на
Code: | ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? D1 F2 F0 EE EA |
(где ?? означает, что соответствующий байт отстается неизменным при замене).
Таких пар замен несколько, и их вхождений в каждом файле тоже может быть несколько. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Mar 07, 2011 00:03 Post subject: |
|
|
Стоило сразу указать на шестнадцатеричный формат представления. Я бы пока этой прогой воспользовался. |
|
Back to top |
|
|
Jonmey
Joined: 27 Sep 2010 Posts: 42
|
(Separately) Posted: Mon Mar 07, 2011 00:26 Post subject: |
|
|
Quote: | Стоило сразу указать на шестнадцатеричный формат представления. |
Quote: | Кто-нибудь знает, как заменить в бинарном файле в искомой строке подстроку? |
Quote: | Я бы пока этой прогой воспользовался. |
Нужен способ как это сделать из командной строки, то есть без гуишного фейса, поскольку речь идет не об одном файле или группе файлов, а о мнгочисленных файлах разбросанных в разных местах, и если пользоваться каждый раз оконной программой (коих миллион), то никаких, ни сил, ни терпения не хватит. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Mar 07, 2011 00:38 Post subject: |
|
|
Jonmey
Бинарность файла не указывает на то, в каком формате нужно обрабатывать этот файл.
Что касаемо группы файлов, то не вижу проблем - жмётся Ctrl+O и вперёд. Причём тут гуишность...
Миллион? Да хотя бы указание на парочку других подобных (Asc + Dec + Hex) уже станет для меня прозрением. Вперёд. |
|
Back to top |
|
|
|