Это будет работать. Использует split () .
echo '"";"";" 01.06.2011";"7";"01.06";"-21,00";"-6.097,73";' | awk -F';' '{ split($7, a, ",") split(a[1], b, "."); print $3 " " b[1] b[2]"\""}'
или комбинация split()
и sub()
.
awk -F';' '{ split($7, a, ",");b = a[1]; sub(/\./, "",a[1]); print $3 " " a[1] "\""}'
или просто с помощью sub()
awk -F';' '{ sub(/,.*/, "", $7); sub(/\./, "", $7) ;print $3 " " $7 "\""}'
Соответствующий документ:
split (строка, массив, fieldsep)
Это делит строку на части
отделяется fieldsep, и хранит части в массиве. Первый кусок
хранится в массиве [1], второй кусок в массиве [2] и т. д.
строковое значение третьего аргумента, fieldsep, является регулярным выражением, описывающим
где разделить строку (так же, как FS может быть регулярным выражением, описывающим, где
разделить входные записи). Если fieldsep опущен, значение FS равно
используемый. split возвращает количество созданных элементов. Раскол
Затем функция разбивает строки на части, аналогично
пути ввода строк разбиты на поля. Например:
split ("auto-da-fe", a, "-") разбивает строку auto-da-fe' into three
fields using
- 'в качестве разделителя.
Устанавливает содержимое массива a
следующим образом: a [1] = "auto" a [2] = "da" a [3] = "fe"