Вот пример входных файлов:
FILE1 FILE2
1,1,1,1,2 6,2,2,2,2
2,2,1,2,1 1,1,1,1,2
3,1,2,1,1 5,3,2,1,2
4,2,1,1,1 8,3,2,5,2
5,1,2,1,1 2,2,2,2,2
Я хочу сначала удалить все строки, которые точно соответствуют другому файлу. Первая строка была удалена, потому что файл 2 уже имеет ее, у меня также есть эта часть кода.
FILE1 FILE2
2,2,1,2,1 6,2,2,2,2
3,1,2,1,1 1,1,1,1,2
4,2,1,1,1 5,3,2,1,2
5,1,2,1,1 8,3,2,5,2
2,2,2,2,2
После этого я хотел бы обновить файл 2 строками из file1. Условие для какой строки обновлять является первым числом. Если первый номер в первом столбце совпадает с первым номером в файле 2 первого столбца, он обновит остальные числа в той же строке.
Теперь итоговый файл будет выглядеть так. Звездочки показывают изменения, и вот где я застрял.
FILE1 FILE2
2,2,1,2,1 6,2,2,2,2
3,1,2,1,1 1,1,1,1,2
4,2,1,1,1 *5,1,2,1,1*
5,1,2,1,1 8,3,2,5,2
*2,2,1,2,1*
Единственная проблема, с которой я сталкиваюсь в данный момент, это последняя часть. Я не уверен, как я должен обновлять числа, я думал об использовании разделения, чтобы мы знали первый столбец чисел и сопоставили это с файлом 2, но я просто не мог понять это. Мой код ниже.
$ref = Get-Content $file2
(Get-Content $file1) |
? { $ref -notcontains $_ } |
Set-Content $file1
$content = Get-Content $file1
(Get-Content $file2 $Column1 = $_.split(',')) |
? { $ref -contains $column1} |
Set-Content $file2