Намного проще использовать tr
$ tr '_' ',' < input.csv | tr -d '"'
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Это работает так, что trпринимает два аргумента - набор символов для замены и их замену. В этом случае у нас есть только наборы из 1 символа. Мы перенаправляем поток input.csvввода trstdin через <оператор оболочки и направляем полученный результат tr -d '"'для удаления двойных кавычек.
Но awkтоже могу это сделать.
$ cat input.csv
"1_1_0_0_76"
"1_1_0_0_77"
"1_1_0_0_78"
$ awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Это немного отличается: awk читает каждый файл построчно, каждый встроенный скрипт /Pattern match/{ codeblock}/Another pattern/{code block for this pattern}. Здесь у нас нет шаблона, поэтому он означает выполнение кодового блока для каждой строки. gsub()Функция используется для глобальной подстановки внутри строки, поэтому мы используем ее для замены подчеркивания запятыми, а двойные кавычки - пустой строкой (эффективно удаляя символ). 1На месте матча шаблона с отсутствующим блоком кода, который по умолчанию просто для печати линии; другими словами, кодовый блок с gsub()выполняет работу и 1печатает результат.
Используйте команду redirection ( >) для отправки вывода в новый файл:
awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv > output.csv