Перейти к содержанию
    

Ищу редактор с функцией Replace по маске

Блин MED ето Multi-Edit ?
Нет, ME это ME, а MED это MED

Маленький такой (инсталляшка меньше 2 мегабайт), но довольно неплохой редактор. Для С даже навигация есть (перейти в точку определения данной функции/дефайна и вернуться назад) (для его размера это таки "даже").

Только регулярыне вражения у него "по старому стилю", в образце поиска придётся писать что-то в духе

([_0-9A-Za-z]+)_p([^_0-9A-Za-z]*)

а в образце замены

i\1\2

 

 

Multi-Edit и Notepad++ ето два моих любимых редактора.
Ну так вот N++

post-5417-1291664822_thumb.png

Правда, у него немного другой диалект -- для выделения части образца скобки ( ) маскировать \( \) не надо, а надо будет маскироать для применения их как обычных символов.

 

Вы просто не знали, что Вам нужны "регулярные выражения" (которые, как тут уже отмечалось, порождение отнюдь не линукса). Их есть давно и в куче мест.

 

вот и ReAl говорил что такое возможно...
Я не говорил, что возможен один гибкомощный инструмент на все случаи жизни. Т.е. он, возможно, есть, слухи про толи редактор со встроенной операционной системой, толи про операционную систему с интегрированнм редактором про до меня доходили. Но я предпочитаю набор правильно заточенных (а когда надо - затупленных, навроде кувалды) инструментов.

 

Вопрос: можно ли, пользуясь vim или sed, сделать такое преобразование: NAME1_NAME2_NAME3_NAMEN_p => Name1Name2Name3NameN_p
"должно быть можно", если не sed-ом, то awk-ом. Но я так далеко не заходил и наизусть все заклинания не помню. Когда мне надо - лезу и читаю доку. Обычно уходит меньше времени, чем нужно для того, чтобы сделать то же самое вручную :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, ME это ME, а MED это MED

 

Ну так вот N++

Правда, у него немного другой диалект -- для выделения части образца скобки ( ) маскировать \( \) не надо, а надо будет маскироать для применения их как обычных символов.

Вы просто не знали, что Вам нужны "регулярные выражения" (которые, как тут уже отмечалось, порождение отнюдь не линукса). Их есть давно и в куче мест.

 

Я не говорил, что возможен один гибкомощный инструмент на все случаи жизни. Т.е. он, возможно, есть, слухи про толи редактор со встроенной операционной системой, толи про операционную систему с интегрированнм редактором про до меня доходили. Но я предпочитаю набор правильно заточенных (а когда надо - затупленных, навроде кувалды) инструментов.

 

"должно быть можно", если не sed-ом, то awk-ом. Но я так далеко не заходил и наизусть все заклинания не помню. Когда мне надо - лезу и читаю доку. Обычно уходит меньше времени, чем нужно для того, чтобы сделать то же самое вручную :-)

 

:1111493779: :1111493779: :biggrin: :biggrin:

 

Спасибо

 

действительно, я полагал что Me, MED и MultiEdit - одно и тоже. век живи век учись...

 

ну вот... осталось только с NAME1_NAME2_NAME3_NAMEN_p разобраться. Кстати в Pn дока читаемая... а в MultiEdit в offline доке я хрен че понял. А http://wiki.mulitedit.com не открывается. Будем читать доку pn++. Что же касается собственной ос, то на етот счет интересен Словогрыз, о котором я писал в первом посте. Ето по моему синтаксический анализатор с интерпретатором команд. Очень интересная игрушка. Только либо я снова не вкурил доку, либо он не отлажен до конца.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ReAL, имхо во втором случае не \w, а [\w\d], сорри если неправильно понял, что хотелось. Или в N++ "\w" включает цифры? Просто интересно. Я где-то нарвался на эквивалентность "\w" и [[:alpha:]_]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос: можно ли, пользуясь vim или sed, сделать такое преобразование: NAME1_NAME2_NAME3_NAMEN_p => Name1Name2Name3NameN_p

 

Примерно вот так:

 

sed -e "s/\(^\|_\)\([^_]\)\([^_]\+\)/\u\2\L\3/g"

 

Другие варианты можете дописать сами. Hint: команды редактора можно записать в отдельный файл и вызывать sed с ключом -f cmdfile.sed.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Иногда лучше вместо сочинения одного монстроидального регэкспа сделать несколько проходов регэкспами попроще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примерно вот так:

 

sed -e "s/\(^\|_\)\([^_]\)\([^_]\+\)/\u\2\L\3/g"

 

Другие варианты можете дописать сами. Hint: команды редактора можно записать в отдельный файл и вызывать sed с ключом -f cmdfile.sed.

 

блин я надеялся, что хотя бы такое невозможно, и мне не придется ету хрень качать). Скачал. Не запускается. Грит libintl3.dll не найден.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Грит libintl3.dll не найден.

http://gnuwin32.sourceforge.net/packages/libintl.htm

 

И еще - когда качаете что-то такое гнутое, смотрите "Requirements" - винда не линукс, и автоматически все необходимое выкачивать не умеет.

 

И еще еще - http://unxutils.sourceforge.net/ - не должны тянуть за собой кучу остальных пакетов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ReAL, имхо во втором случае не \w, а [\w\d], сорри если неправильно понял, что хотелось. Или в N++ "\w" включает цифры? Просто интересно. Я где-то нарвался на эквивалентность "\w" и [[:alpha:]_]
Включает. Там на скриншоте

NAME2_NAME3_p;

оно заменяется на

iNAME2_NAME3;

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://gnuwin32.sourceforge.net/packages/libintl.htm

 

И еще - когда качаете что-то такое гнутое, смотрите "Requirements" - винда не линукс, и автоматически все необходимое выкачивать не умеет.

 

И еще еще - http://unxutils.sourceforge.net/ - не должны тянуть за собой кучу остальных пакетов.

 

 

%ЛЯ, ненавижу %баный ЛИНУКС!!!!!!!!!!!!!

 

скачал все запустил, а он мне пишет:

 

The FAR manager, version 1.70 beta 5 (build 1634)

Copyright © 1996-2000 Eugene Roshal, Copyright © 2000-2003 FAR Gro

Evaluation copy, please register.

C:\Program Files\Far>cd C:\Program Files\GnuWin32\bin

C:\Program Files\GnuWin32\bin>

 

C:\Program Files\GnuWin32\bin>sed.exe

╚ёяюы№чютрэшх: sed.exe [╬╧╓╚▀]... {Єюы№ъю-ёъЁшяЄ-хёыш-эхЄ-фЁєуюую-ёъЁш

эющ-Їрщы]...

 

-n, --quiet, --silent

эх т√тюфшЄ№ ртЄюьрЄшўхёъш яЁюьхцєЄъш

-e script, --expression=script

фюсртыхэшх ёъЁшяЄр т шёяюыэ хь√х ъюьрэф√

-f script-file, --file=script-file

фюсртыхэшх ёюфхЁцшьюую Їрщыр-ёъЁшяЄр т шёяюыэ хь√х ъю

-i[╤╙╘╘╚╩╤], --in-place[=╤╙╘╘╚╩╤]

ЁхфръЄшЁютрэшх Їрщыют эр ьхёЄх (ёючфрхЄ ъюяш■, хёыш є

°шЁхэшх)

-b, --binary

юЄъЁ√трЄ№ Їрщы√ т сшэрЁэюь Ёхцшьх (CR+LF эх юсЁрсрЄ√т

-c, --copy

use copy instead of rename when shuffling files in -i

(avoids change of input file ownership)

-l N, --line-length=N

єърчрэшх цхырхьющ фышэ√ яхЁхэюёшьющ ёЄЁюъш фы  ъюьрэф

--posix

юЄъы■ўхэшх тёхї Ёрё°шЁхэшщ GNU.

-r, --regexp-extended

шёяюы№чютрэшх т ёъЁшяЄх Ёрё°шЁхээ√ї Ёхуєы Ёэ√ї т√Ёрцх

-s, --separate

фюяє∙хэшх, ўЄю Їрщы√ Ёрчфхыхэ√, р эх т тшфх юфэюую

фышээюую эхяЁхЁ√тэюую яюЄюър.

-u, --unbuffered

чруЁєчър ьшэшьры№эюую юс·хьр фрээ√ї шч тїюфэ√ї Їрщыют

ш сюыхх ўрёЄ√щ ёсЁюё эр фшёъ т√їюфэ√ї сєЇхЁют

--help т√тюф ¤Єющ ёяЁртъш ш т√їюф

--version т√тюф шэЇюЁьрЎшш ю тхЁёшш ш т√їюф

 

┼ёыш юяЎш  -e, --expression, -f, шыш --file эх єърчрэр, Єюуфр яхЁт√щ

эхюяЎшюэры№э√щ рЁуєьхэЄ схЁхЄё  ъръ ёъЁшяЄ sed фы  шэЄхЁяЁхЄрЎшш. ┬ёх

юёЄрт°шхё  рЁуєьхэЄ√  ты ■Єё  шьхэрьш тїюфэ√ї Їрщыют; хёыш тїюфэ√х

Їрщы√ эх єърчрэ√, Єюуфр ўшЄрхЄё  ёЄрэЄрЁЄэ√щ ттюф.

 

GNU sed home page: <http://www.gnu.org/software/sed/>.

General help using GNU software: <http://www.gnu.org/gethelp/>.

 

и весь инет полон умных советов %ЛЯ, а как заставить работать ето дерьмо непонятно!!!!

 

:biggrin: ну хоть и с кракозябрами, но как то заработало)) осталось теперь ето дерьмо подправить.... неужели мне придется в етом разобраться ? :crying:

 

м. Скрипт s/\(^\|_\)\([^_]\)\([^_]\+\)/\u\2\L\3/g дефектный. Все делает правильно, только первую заглавную букву переменной делает маленькой( :angry2: ненавижу линукс :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, попробовать команду chcp 866?

Или какие-то другие кодировки...

 

да. я ее обязательно попробую

 

но в данный момент меня интересует скрипт.

 

Скрипт выбора регулярного выражения неправильный, т.к. выбор получается некорректный. В строке, начинающейся с пробела, подмена случится начиная с пробела, таким образом в первой группе выбора заглавная буква превратится в строчную.

 

что мы и видим в обработанном куске:

 

Use work.packageMult.all;

Use work.pckCrc16D16.all;

 

Entity analizeTr is

Port(

-- globalIn

reset : in stdLogic;

-- main clock (state mashine base)

clkInLow : in stdLogic;

-- incoming fifo control

fifoInEmpty : in stdLogic;

fifoInReadEn : out stdLogic;

 

 

подмена (^\|_\) -> (^[a-z,A-Z,0-9]\|_\) тоже радости не приносит. Почему то сжирается первый значащий символ. И не убавляется регистр в первой группе подмены.( я кажется не понимаю как работает оператор подмены \u\2\L\3/g. Не нашел в доке описания, что означают цифры после u и L

 

Se work.pckCrc16D16.all;

 

Ntity analizeTr is

Ort(

-- globalIn

RESET : in stdLogic;

-- main clock (state mashine base)

CLKInLow : in stdLogic;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Линукс тут причём?

 

:rolleyes: в моем представлении линукс, gnu и пр. open source - одного поля ягоды. разве ето не так на самом деле ?

 

в смысле я не отрицаю его полезности и пр. просто на ощупь очень неприятно. как российский автопром примерно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да что вы себе мозг трахаете скачиванием отдельных пакетов?

У меня, 100 лет в обед, стоит cygwin. Это окружение GNU (sed, awk, find, sh и прочее) работающее в Windows.

http://www.cygwin.com/

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...