У меня большой CSV-файл (~ 1 ГБ) - data.csv
Переменная с огромным списком строк, разделенных конвейерами.
list="abc|def|ghi.........."
Цель это поиск 2-го и 3-го столбцов data.csv
для каждой строки, указанной в переменной list
, и замена ее на строку unassigned
Ниже приведено то, что я придумал,
awk -v list="$list" 'BEGIN{FS=OFS=","}{gsub(list,"unassigned",$2)}{gsub(list,"unassigned",$3)}1' data.csv > data_new.csv
Работает нормально, пока список маленький.Как только переменная списка пересекает строки из 10 тыс., Она выдаст ошибку
/usr/bin/awk: Argument list too long
Есть ли какое-либо решение для обработки этого длинного списка здесь?Абсолютно новое решение также приветствуется.Заранее спасибо.
Примечание. Предпочитает избегать циклического перебора списка, поскольку это снижает производительность.