Используйте выражение адреса, чтобы выбрать строки, которые вы хотите отредактировать, затем используйте обычную замену, чтобы фактически выполнить замену. Самое интересное в sed - это то, что перед командой "s" вы можете указать номер строки или регулярное выражение для выбора нужных вам строк (адрес также может быть разделенным запятыми началом и концом, которые указывают все строки содержится в пределах "диапазона адресов", но при исключении второй части выделяются отдельные строки).
В выражении вашего адреса ищите «не запятая, а затем то, что вы хотите».
При замене запомните материал перед вашим шаблоном, затем поместите детали "перед" перед строкой замены. Вы помните часть "до", потому что вы хотите, чтобы материал "до" включал только одну запятую, не больше и не меньше. Здесь показано, что оно соответствует первому полю и влияет только на второе; Я заменяю "la" на "moo" во втором столбце строк, которые соответствуют "atter" в первом столбце.
$ echo -e "pattern,blah,aaa\npattern,bleh,stuff" | sed '/[^,]*atter/s/\(^[^,]*,[^,]*\)la/\1moo/g'
pattern,bmooh,aaa
pattern,bleh,stuff
Одно это не будет работать правильно с экранированными запятыми в полях, так что, надеюсь, ваш CSV-файл прост. :)