У меня есть файл in.csv
с одним столбцом следующим образом:
Sample
a_b_c
d_e_f
g_h_i
Я хочу изменить разделитель полей с _
на ,
и распечатать отдельные поля, но сохраняя входной столбец как в первом столбце выходного файла. Я хочу использовать awk
в принципе.
Это то, что у меня есть:
awk 'BEGIN {FS="_";OFS=","} {$1=$1}1' in.csv > out.csv
, что дает мне это
Sample
a,b,c
d,e,f
g,h,i
Как я могу выводить это похоже на это вместо этого, сохраняя исходный столбец (переименованный ID
)?
ID,group1,group2,group3
a_b_c,a,b,c
d_e_f,d,e,f
g_h_i,g,h,i
Обратите внимание, что количество полей ввода является переменным, а строка ввода Sample
может иметь другое имя или быть пустой, или даже не существует, но мне все равно нужен такой вывод ...
EDIT
После проверки всех ответов я должен уточнить здесь ввод приведенный выше файл является просто примером ... в реальных файлах, которые у меня обычно есть, более 3 полей, разделенных _
(но я не знаю, сколько заранее) и бесчисленное количество строк, однако я постараюсь убедиться, что все строки в данный файл согласован по количеству полей, которые нужно «разбить».
Ответы ниже, похоже, не работают, когда в моих файлах более или менее ровно 3 поля для разделения на строку, мне понадобится больше универсальный однострочный, если это возможно.
Для в данный момент, для простоты, я бы предпочел ничего не делать со строкой заголовка и оставить ее как есть.
Это означает, что для этого другого примера:
Some_header
a_b_c_1
d_e_f_2
g_h_i_3
Я бы хотелось бы получить это:
Some_header
a_b_c_1,a,b,c,1
d_e_f_2,d,e,f,2
g_h_i_3,g,h,i,3
Оптимально однострочник должен иметь дело со случаями, когда есть строки с несовместимыми полями, поэтому из такого файла:
Some_header
a_b_c
d_e_f_2
g_h_i_3_4
Я бы например, чтобы получить это:
Some_header
a_b_c,a,b,c
d_e_f_2,d,e,f,2
g_h_i_3_4,g,h,i,3,4
Разве нет способа записать строку с _
в переменную, затем разделить переменную на _
, а затем распечатать переменную и все ее компоненты, разделенные ,
? Извините, я подумал, что это будет проще ... Может, будет проще с однострочным Perl
? Извините, я не очень разбираюсь в однострочниках ... Еще раз спасибо!