LinuxForum.Fans
Тема

awk, sed экранирование символов

Автор: tmp13 4 сообщений 5227 просмотров
#58926

Что-то я не понимаю...
есть файл типа:

text
< 01.10.2009 5726
---
> 01.10.2009 1008
8c8
< 08.10.2009 5731
---
> 08.10.2009 5730
15c15
...

хочу вытащить даты и сделать из них запрос:

text
cat date.txt|awk '{if ($2 != "" ){print "delete from TEST where date=\""$2"\";"}}'|uniq

получаем:

delete from TEST where date="01.10.2009";
delete from TEST where date="08.10.2009";
....

но проблема в том что вместо " мне нужно использовать ', и в том что мне казалось символы экранируются с помощью \
получаю два варианта:
1.

text
cat date.txt|awk '{if ($2 != "" ){print "delete from TEST where date=\'"$2"\';"}}'|uniq
> ^C - тут он требует продолжения ввода

2.

text
cat date.txt|awk '{if ($2 != "" ){print "delete from TEST where date=\""$2"\""}}'|uniq|sed 's/"/\'/g'
> ^C - тут он требует продолжения ввода

не понимаю... как символы то экранировать...(

#58959

Так что ли?

text
awk '{if ($2 != "" ){print "delete from TEST where date='"'"'"$2"'"'"';"}}'

Экранирование апострофа - это тоже управляющая комбинация. man awk гласит:

text
\'         matches the empty string at the end of a buffer.

можно ещё ASCII пользоваться:

text
$ awk 'BEGIN { print "\047hello\047" }'
'hello'
#59014

tmp13, вы по-русски ТЗ поставить можете?
я ничего не понял.
Разве я не раскрыл эту тему здесь?

#59182

2drBatty ни как руки т.е голова не дойдёт прочитать учебник))

P.S по русски тз поставить не могу( на любом другом языке тем более=)

Войдите или зарегистрируйтесь, чтобы ответить.