Не могу заставить команду awk (gawk) выполнять действия по шаблону.
Она работает, но выполняет операции над ВСЕМИ строками входного файла,
а мне нужно выполнить их только над теми строками,
в которых есть заданный шаблон.
Просмотрел несколько руководств, перепробовал много способов
задания шаблона.
Оператор "if" не принимает - указывает на ошибку.
--------
OS - SuSE Linux Enterprise 9, Kernel 2.6.5.
Вариант gawk - 25.06.2003
Решено:Как записать шаблон в команде awk (LINUX)?
Модератор: /dev/random
-
ПиЛ
- Сообщения: 3
- ОС: SuSE Ent 9
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Решено:Как записать шаблон в команде awk (LINUX)?
давай свой код. телепатов тут нет.
слава роботам!
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Решено:Как записать шаблон в команде awk (LINUX)?
a.awk:a.txt:
Код: Выделить всё
{
if (/test/)
{
print "HELLO"
}
else
{
print "NO"
}
}hello
the test string
end
$ cat a.txt | awk -f a.awk
NO
HELLO
NO
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Решено:Как записать шаблон в команде awk (LINUX)?
Код: Выделить всё
/test/{print "HELLO"; next} {print "NO"}слава роботам!
-
ПиЛ
- Сообщения: 3
- ОС: SuSE Ent 9
Re: Решено:Как записать шаблон в команде awk (LINUX)?
Даю фрагменты.
1. Файл запуска: gawk -f prog file1 > file2
2. Файл prog: CONNECT (a=$2) (b=length(a)-1) (c=substr(a,1,b)) (d=c "/" c ";") ($2=d) {print $0}
(CONNECT - по моим представлениям - шаблон)
3. Файл входной file1:
CONNECT ASUMAR;
CREATE UNIQU IND
4. Файл результата file2:
CONNECT ASUMAR/ASUMAR; - требуемый результат
CREATE UNIQU/UNIQU; IND - нежелательный результат
На оператор if - ругается,
хоть в собственном режиме,
хоть в режиме совместимости (--compat)
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Решено:Как записать шаблон в команде awk (LINUX)?
ну ты все-таки хоть немного поинтересуйся языком, на котором собираешься писать...CONNECT - по моим представлениям - шаблон
откуда ты вообще взял эти круглые скобки? почему шаблон без / /?
man gawk почитай для начала...
в твоей строчке вообще все неправильно. (‡
Код: Выделить всё
/CONNECT/ {c=substr($2,1,length($2)-1); $2=c "/" c ";"} {print $0}слава роботам!
-
ПиЛ
- Сообщения: 3
- ОС: SuSE Ent 9
Re: Решено:Как записать шаблон в команде awk (LINUX)?
Спасибо, работает.