LINUX.ORG.RU

AWK, когда несколько разделителей текста, при замене в колонке значения, убирает разделители на выходе. Как вернуть их?

 ,


0

1

Привет!
Создал скрипт, который вытаскивает из БД несколько строк, разбивает их на колонки за счёт трёх разделителей и по второй колонке, если значение совпадает меняет 16ю на своё. Вот awk:
awk -F":|"id=|," -v Slave=$slave -v Alias=$alias ‘{if($3==Slave) { $16=Alias } print}’;
Тут как видите работа с переменными, всё отлично работает, но блин… замучился.. пропадают после замены в тексте разделители (тут отрабатывает OFS - которая пробел, а как вернуть те что были?). А это «:» потом «,» и единственный разделитель «"id=» так как надо номер освободить от него что бы нужный по условию найти.

Пробовал другой вариант:
awk -v Slave=$slave -v Alias=$alias ‘BEGIN{FIELDWIDTHS=«13 10 186 4 50»} {if ($2==Slave) {$4=Alias} print}’;
Тут как раз заменяет отлично колонку где надпись «null» на нужное значение, но при этом при замене с двух сторон подставляет пробелы и при том у колонки с id=xxx тоже.. (этот вариант не устраивает, так как тут жёсткая длина 4 символа, а она потом может меняться и бардак будет). Вот такая беда.. Не могу найти решения. Есть какой-то вариант переведённый кое как для сохранения разделителей, но какой-то сомнительно сложный..
Помогитеее… пожалуйста )))



Последнее исправление: kaurych (всего исправлений: 1)
Ответ на: комментарий от anonymous

А отрабатывают переменные нормально. Только на выходе пробелы в место трёх разделителей в строке, где замена была.

kaurych
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.