Инструменты пользователя

Инструменты сайта


регулярные_выражения._скрипты_для_sed_и_awk

**Это старая версия документа!**

AWK

AWK — интерпретируемый скриптовый C-подобный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам. Работает в bash (SH) скриптах.

Попробуем разобраться с AWK на примерах:

Синтаксис awk gawk [ключи] [программа] [ список файлов] -F fs - разделитель полей -f файл программы

Создадим список с которым будем работать и назовем его cars.txt.

plym fury 1970 73 2500
chevy malibu 1999 60 3000
ford mustang 1965 45 10000
volvo s80 1998 102 9850
ford thundbd 2003 15 10500
chevy maliby 2000 50 3500
bmw 325i 1985 115 450
honda accord 2001 30 6000
ford taurus 2004 10 17000
toyota rav4 2002 180 750
chevy impala 1985 85 1550
ford explor 2003 25 9500

Начнем работу.

вывод всего файла.

gawk '{print}' cars

Вывод отдельных столбцов

gawk '{print $1, $2, $5}' cars.txt

Использование шаблона

gawk ' /chevy/ {print}' cars.txt

Использование оператора соответствия

gawk '$1 ~ /h/' cars.txt

gawk '$1 ~ /^h/' cars.txt

gawk '$2 ~ /^[tm]/' cars.txt

gawk '$3 ~/5$/ {print $3, $1, «$» $5}' cars.txt

Сравнение

текстовое

gawk '«2000» ⇐$5 && «9000»

> $5' cars.txt

числовое

gawk '2000 ⇐$5 && 9000 > $5' cars.txt

Оператор диаразона

gawk '/volvo/,/bmw/' cars.txt

Работа с файлами программы:

Создадим файл header

BEGIN{ print « Производ. Модель. Год. Пробег. Цена» }
{print}

gawk -f header cars.txt

Модифицируем файл header

BEGIN{ print « Производ. Модель. Год. Пробег. Цена»
print «————————————-«
}

/volvo/,/bmw/ {print}
END {
print »————————————–«
}

Проверим

gawk -f header cars.txt

Использование ИЛИ

BEGIN{ print » Производ. Модель. Год. Пробег. Цена»
print «————————————-«
}

/volvo/ || /bmw/ {print}
END {
print »————————————–«

}

Функция length

gawk ' {print length, $0}' cars.txt

Нумерациия строк

gawk ' {print NR, $0}' cars.txt

Разделители полей

Разбор файла /etc/passwd

BEGIN{ print «Пользователь \tДомашний каталог \t Интерпритатор» FS=»:» print «—————————————————»

}

$3>=1000 {print $1 «\t\t» $6 «\t\t» $7}

END {print «—————————————————»}

регулярные_выражения._скрипты_для_sed_и_awk.1371825129.txt.gz · Последнее изменение: 2013/06/21 18:32 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux