Я новичок в bash. У меня есть файл .csv. Он содержит 3 столбца (имя, число и значение). Вот содержимое столбцов:
Name,Num,Value
ex1,10.20.30.40,val1
ex2,20.30.40.30,val2
ex3,10.45.60.20,val3
ex4,10.20.30.40,val1
ex5,20.30.40.30,val2
Если 2-ые столбцы 2-х строк идентичны, их третья строка также идентична. Я хочу объединить строки, чтобы их 2-й столбец (и, следовательно, 3-й столбец) был идентичен. Например здесь у меня есть 2 строки, что их 2-й столбец "10.20.30.40". Я хочу, чтобы вывод был таким:
Name,Num,Value
ex1 ex4,10.20.30.40,val1
ex2 ex5,20.30.40.30,val2
ex3,10.45.60.20,val3
Используя этот код, я могу получить 1-й и 2-й, как я хотел:
awk 'BEGIN{FS=","} NR==1{print;next} {a[$2]=$2 in a ? a[$2] " " $1 : $1} END{for(i in a) print a[i] "," i}' file
Вот вывод:
Name,Num,Value
ex1 ex4,10.20.30.40
ex2 ex5,20.30.40.30
ex3,10.45.60.20
, но не отображается 3-й столбец. Я попробовал это:
awk 'BEGIN{FS=","} NR==1{print;next} {a[$2]=$2 in a ? a[$2] " " $1 : $1} END{for(i in a) print a[i] "," i "," a[i]}' file
, но это не сработало, он снова напечатал 1-й столбец как 3-й столбец. Например:
Name,Num,Value
ex1 ex4,10.20.30.40,ex1 ex4
ex2 ex5,20.30.40.30,ex2 ex5
ex3,10.45.60.20,ex3
Как мне манипулировать кодом, чтобы получить желаемый результат?