
Файл1 — только данные столбца 1. Остальные столбцы — только заголовок.
Column1, column55, column56, column57, column58, column59, column60,column61, column62
123
124
221
225
333
432
Файл2:
Column1,Column2,Column3,Column4,…………column55, column59, column58, column54, column62, column61
xxx,123,yyy,zzz…….bbb,ccc,ddd,eee,fff,ggg,hhh,c:\a\b\c\ddd,ggg,hhh,c:\a\b\c\dsada,c:\a\b\c\kkja,c:\a\b\c\dsada,c:\a\b\c\kada
xxx,124,xxx,yyy………111,222,333,444,555,vvv,ddd,c:\a\b\c\uuu,ggg,hhh,c:\a\b\c\adada,c:\a\b\c\daa,c:\a\b\c\dsada,c:\a\b\c\kkjj
xxx,221,xxx,yyy………zzz,ddd,333,fff,ccc,ddd,333,c:\a\b\c\vvv,ggg,hhh,c:\a\b\c\dads,c:\a\b\c\adaa,c:\a\b\c\dsada,c:\a\b\c\kkjakjjsa
xxx,333,xxx,yyy………kkk,444,www,333,fff,223,323,c:\a\b\c\xxx,ggg,hhh,c:\a\b\c\dddjj,c:\a\b\c\adaad,c:\a\b\c\dsada,c:\a\b\c\kki2
xxx,787,xxx,yyy………zzz,ddd,333,fff,ccc,ddd,213,c:\a\b\c\yyy,ggg,hhh,c:\a\b\c\dddkf,c:\a\b\c\fasd,c:\a\b\c\dsada,c:\a\b\c\kku3
xxx,827,xxx,yyy………kkk,444,www,333,fff,sda,sda,c:\a\b\c\zzz,ggg,hhh,c:\a\b\c\ddyu,c:\a\b\c\fsssfs,c:\a\b\c\dsada,c:\a\b\c\k233
Рабочий процесс проверки следующий:
- Если столбец1 файла1 = столбец2 файла2 тогда. — сравнение заголовка и данных
И (файл1.столбец55 = файл2.столбец55. — сравнение только заголовка, если они одинаковы
ИЛИ файл1.столбец56 = файл2.столбец56 — сравнение только заголовка, если они одинаковы
ИЛИ файл1.столбец57 = файл2.столбец57 ) — сравнение только заголовка, если они одинаковы
ТО Запись в файл3.csv из файла1
Желаемый вывод должен быть: (аналогично формату file1, но данные должны быть)
Column1 Column55 column57, column58 column59 column60 column61, column62
решение1
Попробуй это,
awk -F ',' 'FNR==NR {a[$1]; next} $2 in a{print $2", "$8}' file1 file2 | sed 's/,.*\\/, /g'
123, ddd
124, uuu
221, vvv
333, xxx
-F '[\\\\,]'
нам требуются два разделителя в соответствии с вашим ожидаемым выводом (запятая и обратная косая черта). Чтобы избежать поведения обратной косой черты, нам потребовалось 4 обратных косых черты.
решение2
Попробуйте также
awk -F ',' '
FNR == NR {T[$1]
next
}
$2 in T {n = split ($8, X, /\\/)
print $2, X[n]
}
' OFS=, file1 file2
123,ddd
124,uuu
221,vvv
333,xxx
Измените номера полей по вкусу (например, $8
--> $55
). Если это не удовлетворяет ваш запрос, сузьте / улучшите вашу спецификацию и выборочные данные.