Здравствуйте.
Помогите, пожалуйста, разобраться с awk.Есть csv файл вида
"KZ 53203401373";"5320_3401373";"Шайба";"K-Z";
"OS 2721_02B";"2721_02B";"Автолампа";"OSRAM";
"OS 2722";"2722";"Автолампа";"OSRAM";Задача следующая - если текст в четвертом столбце равен "OSRAM", то во втором столбце символы "_" следует заменить на "-".
Пишу такую команду
$ awk -F ";" ' $4 == "\"OSRAM\"" {sub("_", "-", $2); print} ' file.csv
команда отрабатывает правильно, заменяет требуемые символы в нужных строках и выводит эти строки. Проблема в том, что строки, которые не подпали под условие $4 == "\"OSRAM\"" не выводятся, т.е. если я перенаправляю вывод в файл (print > FILENAME) то в файле остается только часть строк. Как мне выполнить условие и сохранить замены в файле, не удалив при этом остальные строки?
> Пишу такую команду
> $ awk -F ";" ' $4 == "\"OSRAM\"" {sub("_", "-", $2); print}'0' $4 == "\"OSRAM\"" {sub("_", "-", $2); print}'
1' {if($4 == "\"OSRAM\"")sub("_", "-", $2); print}'
2' $4 == "\"OSRAM\"" {sub("_", "-", $2)} {print}'> строки. Проблема в том, что строки, которые не подпали под условие
> 0' $4 == "\"OSRAM\"" {sub("_", "-", $2); print}'
> 1' {if($4 == "\"OSRAM\"")sub("_", "-", $2); print}'
> 2' $4 == "\"OSRAM\"" {sub("_", "-", $2)} {print}'Андрей, спасибо за быстрый ответ.
Вы уж простите нуба, сегодня только начал разбираться с awk, но куда это писать?
>> 0' $4 == "\"OSRAM\"" {sub("_", "-", $2); print}'
>> 1' {if($4 == "\"OSRAM\"")sub("_", "-", $2); print}'
>> 2' $4 == "\"OSRAM\"" {sub("_", "-", $2)} {print}'
> Андрей, спасибо за быстрый ответ.
> Вы уж простите нуба, сегодня только начал разбираться с awk, но куда
> это писать?это что-то новенькое
>> 0' $4 == "\"OSRAM\"" {sub("_", "-", $2); print}'
>> 1' {if($4 == "\"OSRAM\"")sub("_", "-", $2); print}'
>> 2' $4 == "\"OSRAM\"" {sub("_", "-", $2)} {print}'^---Это 3 варианта той части твоей команды, которая за "awk" в одинарных кавычках.
Цифры в начале строки _не часть кода. #0 - твой вариант, ##1 и 2 - варианты его изменения.> Вы уж простите нуба, сегодня только начал разбираться с awk, но куда это писать?
Туда же...
>>> 0' $4 == "\"OSRAM\"" {sub("_", "-", $2); print}'
>>> 1' {if($4 == "\"OSRAM\"")sub("_", "-", $2); print}'
>>> 2' $4 == "\"OSRAM\"" {sub("_", "-", $2)} {print}'
> ^---Это 3 варианта той части твоей команды, которая за "awk" в одинарных
> кавычках.Спасибо, все работает))