Я пытаюсь манипулировать огромным файлом (+5.000.000 записей), поэтому я могу заменить значение 8-го столбца, например.Замените строку новым значением
If $8 = 1 replace it with success
if $8 = 2 replace it with check
if $8 = null replace with undefined
Вот часть данных, которая отделяется с помощью ,
характера:
"APPLICATION_ID","ORIGIN_ID","SERVICE_ID","PROVIDER_ID","RATING_ID","ATO","DATE","USER_TYPE","ESTATUS","OPERATION_ID"
"3","2","424","5020","1058","3017292917","30/11/2016 01:14:25 a.m.","1","2004","14804862360104011458"
поле Я хочу, чтобы заменить это USER_TYPE
расположен на $8
Я попытался это, но это Безразлично» t заменить значения:
awk '{if($8 = 1) print $1, $2, $3, $4, $5, $6, $7, "success", $9, $10}' input_file
Как я могу это сделать?
, как показано ниже, один '=' присваивает значение на РИТ к имени на LHS. Чтобы проверить равенство, используйте '==', поэтому 'if ($ 8 == 1) ...'. Вам также нужно указать 'awk' разделить поля на', 'char, либо с awk -F, '{...}' file' OR' awk 'BEGIN {FS = ","} {.... } 'файл'. Что происходит, когда '' '' внутри данных dbl-котировки? Kaboom! ... Намного лучше использовать char для разделения полей в вашем файле данных (или, может быть, '|' char). Удачи. –
shellter
Когда вам нужно иметь дело с csv, awk определенно не является хорошим способом, поскольку он не обрабатывает случаи, когда значение содержит разделитель. Вы должны использовать инструмент, предназначенный для работы с csv, например 'csvtool'. –