Из
some_text KEY_WORD2 some_text )
получить:
some_text 'KEY_WORD2 some_text' )
вобшем заключить в кавычки KEY_WORD2 и все что следует за етим до скобки
thanks
>вобшем заключить в кавычки KEY_WORD2 и все что следует за етим доВ GNU awk есть gensub c \1\2\3 :
#!/usr/bin/gawk -f
BEGIN {
str="some_text KEY_WORD2 some_text )"
print str
str=gensub("^\(some_text \+\)([^ )][^)]+[^ )])( *\\))","\\1'\\2'\\3",1,str)
print str
exit
}Если нужно на каком-нибудь mawk, можно "изображать" BASIC с кучей substr, index и проч.
>[оверквотинг удален]
>BEGIN {
>str="some_text KEY_WORD2 some_text )"
>print str
>str=gensub("^\(some_text \+\)([^ )][^)]+[^ )])( *\\))","\\1'\\2'\\3",1,str)
>print str
>exit
>}
>
>Если нужно на каком-нибудь mawk, можно "изображать" BASIC с кучей substr, index
>и проч.спасибо
как можно ето сделать с файлом ?
типа в файле заменить все строки по етому скрипту
Может все-таки лучше sed или perl? Использование инструментов не по назначению не лучшая идея.
>Может все-таки лучше sed или perl? Использование инструментов не по назначению не
>лучшая идея.подскажете как перлом?
Да почти как и при помощи sed. Перл удобней если задача требует привлечения различных инструментов типа awk/sed/grep итд, он просто совмещает все в себе.
Пример:
$ echo "some_text KEY_WORD2 some_text ) another text" |perl -pe 's/KEY_WORD2([^)]*\))/"KEY_WORD2$1"/'
some_text "KEY_WORD2 some_text )" another text
>Из
>some_text KEY_WORD2 some_text )
>получить:
>some_text 'KEY_WORD2 some_text' )
>вобшем заключить в кавычки KEY_WORD2 и все что следует за етим до
>скобки
>thanksecho "some_text KEY_WORD2 some_text)" | sed -e "s/KEY_WORD2/\'KEY_WORD2/" -e "s/)$/\')/"
some_text 'KEY_WORD2 some_text')
>[оверквотинг удален]
>>some_text KEY_WORD2 some_text )
>>получить:
>>some_text 'KEY_WORD2 some_text' )
>>вобшем заключить в кавычки KEY_WORD2 и все что следует за етим до
>>скобки
>>thanks
>
>echo "some_text KEY_WORD2 some_text)" | sed -e "s/KEY_WORD2/\'KEY_WORD2/" -e "s/)$/\')/"
>
>some_text 'KEY_WORD2 some_text')thanks
ставит кавычку перед последней скобкой а не сразу перед первой :(
echo "some_text KEY_WORD2 some_text) )"| sed -e "s/KEY_WORD2/\'KEY_WORD2/" -e "s/)$/\')/"
some_text 'KEY_WORD2 some_text) ')
Варианты для perl и sed. Обратите внимание на отличия в синтаксисе регексов.
$ echo "some_text KEY_WORD2 some_text) ) other text"| perl -pe "s/KEY_WORD2([^)]*)\)/'KEY_WORD2\$1')/"
some_text 'KEY_WORD2 some_text') ) other text$ echo "some_text KEY_WORD2 some_text) ) other text"| perl -pe "s/KEY_WORD2([^)]*)\)/'KEY_WORD2\1')/"
some_text 'KEY_WORD2 some_text') ) other text$ echo "some_text KEY_WORD2 some_text) ) other text"| sed -e "s/KEY_WORD2\([^)]*\))/'KEY_WORD2\1')/"
some_text 'KEY_WORD2 some_text') ) other text$ echo "some_text KEY_WORD2 some_text) ) other text"| sed -re "s/KEY_WORD2([^)]*)\)/'KEY_WORD2\1')/"
some_text 'KEY_WORD2 some_text') ) other text
>[оверквотинг удален]
>some_text 'KEY_WORD2 some_text') ) other text
>
>$ echo "some_text KEY_WORD2 some_text) ) other text"| perl -pe "s/KEY_WORD2([^)]*)\)/'KEY_WORD2\1')/"
>some_text 'KEY_WORD2 some_text') ) other text
>
>$ echo "some_text KEY_WORD2 some_text) ) other text"| sed -e "s/KEY_WORD2\([^)]*\))/'KEY_WORD2\1')/"
>some_text 'KEY_WORD2 some_text') ) other text
>
>$ echo "some_text KEY_WORD2 some_text) ) other text"| sed -re "s/KEY_WORD2([^)]*)\)/'KEY_WORD2\1')/"
>some_text 'KEY_WORD2 some_text') ) other textбольшое спасибо работает как в аптеке :)