У меня есть два файла, которые я хочу согласовать в один файл для построения графика xy.
Файл1 содержит различное значение x в каждой строке, за которым следует последовательность значений y ната же строкаFile2 содержит определенное значение y, которое мне нужно из File1 для каждой точки x.
На самом деле у меня 50 000 строк и 50-100 столбцов, но вот упрощенный пример.
Файл1 выглядит следующим образом:
1 15 2 3 1
2 18 4 6 5
3 19 7 8 9
4 23 10 2 11
5 25 18 17 16
- столбец1 - номер строки.
- столбец 2 - это мое значение x, отсортированное по возрастанию.
- столбцы 3-5 - это мои значения y.Они не уникальны;yy в одной строке может совпадать с ay в другой строке.
File2 выглядит следующим образом:
3
5
2
18
Y в каждой строке в File2 соответствует числу, соответствующему одному изу в File1 из той же строки (для первых нескольких сотен строк).После первых нескольких сотен строк они могут не всегда совпадать.Следовательно, File2 имеет меньше строк, чем File1.Я хотел бы либо игнорировать эти строки, либо заполнить их 0.
Goal
Выходные данные, File3, должны состоять из:
15 3
18 5
19 0
23 2
25 18
или строки с
19 0
удалено, в зависимости от того, что работает для скрипта.Если ни один из вариантов невозможен, то я также буду согласен просто сопоставлять значения y построчно, пока не будет найдено совпадение, а затем остановлюсь там.
Попытки
IПервоначально File2 был перенаправлен в массив:
a=( $(grep -e '14,12|:*' File0 | cut -b 9-17) )
, но затем я заметил, что подобные вопросы ( 1 , 2 ) на Stackexchange использовали второй файл, поэтому я перенаправилприведенная выше команда grep в File2.
Эти вопросы немного отличаются, поскольку мне требуются определенные столбцы из File1, но я подумал, что, по крайней мере, могу использовать их в качестве отправной точки.Решения этих вопросов:
1)
grep -Fwf File2 File1
воспроизводит, конечно, всю строку в File1, и я не уверен, как поступить дальше;или
2)
awk 'FNR==NR {arr[$1];next} $1 in arr' File2 File1
для меня не получается, без сообщения об ошибке, кроме общего ответа на помощь awk.
Возможно ли это сделать?Спасибо.