Привет!
Создал скрипт, который вытаскивает из БД несколько строк, разбивает их на колонки за счёт трёх разделителей и по второй колонке, если значение совпадает меняет 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 символа, а она потом может меняться и бардак будет).
Вот такая беда.. Не могу найти решения. Есть какой-то вариант переведённый кое как для сохранения разделителей, но какой-то сомнительно сложный..
Помогитеее… пожалуйста )))