LINUX.ORG.RU

как укоротить слова в файле?

 ,


0

1

есть много скриптов в них _переменные начинающиеся с _

["{_т,_тут}"]  
_тут = _нужна_проверка_конфликта
_или_такими=_неТрололо
["{_т,_ту}"]
_ту = _н
_и=_нт  

цель укоротить без конфликтов слова скриптом перед сборкой

примеры файлов https://github.com/search?q=language%3ASQF+_&type=code

совсем не понимаю sed, и немного bash
помогите хотябы частично

по пунктам

===============================================

_var _var_var_var {["u _t, jj _t2[_tut ]_tut _Nujna;_konflict"_ili_ebobU_uu uu

1.0

наверняка можно все в пунктах 1.1-1.5 сделать 1-2 выражениями но

1.1

если нету символа _ перед [a-zA-Z0-9]+ т.е. любое слово например u uu но не _u_uu перед ними ставится перенос строки
что должно получиться

_var _var_var_var {["
u _t, 
jj _t2[_tut ]_tut _Nujna;_konflict"_ili_ebobU_uu 
uu

1.2

если нету [a-zA-Z0-9]+ перед символом _ делать перенос строки перед _
т.е. _var _var_var_var _ili_ebobU_uu но не _var_var _ebobU_uu
что должно получиться

_var 
_var_var_var {["
u 
_t, 
jj 
_t2[
_tut ]
_tut 
_Nujna;
_konflict"
_ili_ebobU_uu 
uu

1.3

удалить строки начинающиеся не с _ что должно получиться

_var 
_var_var_var {["
_t, 
_t2[
_tut ]
_tut 
_Nujna;
_konflict"
_ili_ebobU_uu 

1.4

после последнего символа [a-zA-Z0-9] удалять все в строке
что должно получиться

_var
_var_var_var
_t
_t2
_tut
_tut
_Nujna
_konflict
_ili_ebobU_uu

1.5

убрать повторяющиеся переменные _tut но не _var_var_var
что должно получиться

_var
_var_var_var
_t
_t2
_tut
_Nujna
_konflict
_ili_ebobU_uu

это будет массив для 2.1

2.1

bash, могу сам написать и укоротить переменные
но вопросы по sed
в оригинале изменить слова из массива полученные в 1.5 наподобие _var но так чтобы не изменились _var_var_var например на _v
т.е. похоже на 1.2 но проверка, только если перед переменной например _var нет [a-zA-Z0-9]+ изменять _var на _v
должно получиться

_v _va {["u _t, jj _t2[_tu ]_tu _N;_k"_i uu


Последнее исправление: nanosecond (всего исправлений: 12)
Ответ на: комментарий от nanosecond

Решай.

Мы не будем писать за тебя минификатор (обфускатор?), особенно без спеков, денег и с заявленной целью в виде твоего саморазвития.

t184256 ★★★★★
()

,ойблю жобпки липнут ко мне опять

nanosecond
() автор топика
Ответ на: комментарий от nanosecond
sed "s/$v/$newvar/" -i $1

еще перед и после $v не должно быть [0-9a-A-Z_]
иначе такое

_var _v_var _varvar
sed "s/_var/_new/" -i $1
_new _v_new _newvar

должно быть

_new _v_var _varvar
nanosecond
() автор топика
Ответ на: комментарий от nanosecond

как в sed делать проверки без замены перед заменой?

nanosecond
() автор топика

как в sed границу слова сделать

nanosecond
() автор топика

Тебе надо вытащить из скрипта переменные, сократить и записать обратно? Если не нужно сохранение смысла имён переменных - делай обфускацию. Переименовавай их в a,b итак далее по списку.

На баше я бы это не делал ни в коем случае.

pinus_nigra
()

sed 's/\<_[a-z]+\>/r/g' пытаюсь заменить слово \< начало слова _ символ [a-z]+ любое количество строчных букв \> конец слова на r не получается

nanosecond
() автор топика
Ответ на: комментарий от nanosecond

Приведи слово, приведи каким должен быть результат. Иначе это разговор сам с собой, похожий на шизоидный бред.

anonymous
()

Птчк, ты упрлс…

aol ★★★★★
()
Ответ на: комментарий от nanosecond

пытался этим sed -e 's/\<_[a-z]+\>/r/g' в это превратить r _vr _r r_ rvar rr var r=r r r

nanosecond
() автор топика

trololo _trololo trololo

sed 's/.*[^a-z]\(_[a-z]+\).*/\n\1/g' так пытался перед _trololo сделать перенос строки не получается

nanosecond
() автор топика
Ответ на: комментарий от anonymous

так не пойдет на самом деле в файле разные, динамически делать нужно

nanosecond
() автор топика

мне надо понять почему не получается

nanosecond
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.