The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"как заменить часть строки в awk?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"как заменить часть строки в awk?"  
Сообщение от new_user721 email on 18-Сен-08, 06:25 
Из
some_text KEY_WORD2 some_text     )
получить:
some_text 'KEY_WORD2 some_text' )
вобшем заключить в кавычки KEY_WORD2 и все что следует за етим до скобки
thanks
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "заменить часть строки в awk"  
Сообщение от Andrey Mitrofanov on 18-Сен-08, 08:50 
>вобшем заключить в кавычки 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 и проч.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "заменить часть строки в awk"  
Сообщение от new_user721 email on 18-Сен-08, 15:38 
>[оверквотинг удален]
>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
>и проч.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "как заменить часть строки в awk?"  
Сообщение от angra (ok) on 18-Сен-08, 16:51 
Может все-таки лучше sed или perl? Использование инструментов не по назначению не лучшая идея.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "как заменить часть строки в awk?"  
Сообщение от new_user721 email on 18-Сен-08, 21:19 
>Может все-таки лучше sed или perl? Использование инструментов не по назначению не
>лучшая идея.

подскажете как перлом?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "как заменить часть строки в awk?"  
Сообщение от angra (ok) on 18-Сен-08, 23:44 
Да почти как и при помощи 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
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "как заменить часть строки в awk?"  
Сообщение от anf email(??) on 18-Сен-08, 23:05 
>Из
>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')

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "как заменить часть строки в awk?"  
Сообщение от new_user721 email on 18-Сен-08, 23:55 
>[оверквотинг удален]
>>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) ')

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "как заменить часть строки в awk?"  
Сообщение от angra (ok) on 19-Сен-08, 01:45 
Варианты для 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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "как заменить часть строки в awk?"  
Сообщение от new_user721 email on 19-Сен-08, 04:35 
>[оверквотинг удален]
>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

большое спасибо работает как в аптеке :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру