Замена столбца с помощью awk

Если этот конкретный графический чип (или, в случае iGPU, этот системный чипсет )изначально был разработан для использования в ноутбуках, он может иметь три выхода в фактическом чипе :и встроенный DisplayPort(eDP)для встроенного -дисплея ноутбука, затем обычный HDMI и DisplayPort для внешних подключений.

Разработчик вашей системы/материнской платы может либо использовать их в исходном виде, либо добавить преобразователи для обеспечения других типов разъемов.

Стандарт графического модуля MXM включает стандартное определение таблицы ACPI/WMI, которая может использоваться для описания типов и расположения разъемов дисплея. Однако, если бы команда разработчиков прошивки спешила, они могли бы просто использовать стандартную примерную таблицу данных от поставщика графического процессора, вместо того, чтобы настраивать ее в соответствии с реальным оборудованием.

2
08.06.2021, 13:05
1 ответ

Это можно сделать с помощьюjoin:

~$ join -1 1 -2 9 -o 1.1,2.12,1.3,1.4,1.5 file2 source.dat 
49667.8048 6.10352e-05 3.000 1 1
49667.8782 0.00546265 1.000 1 1
49668.7284 -0.00497437 1.000 1 1
49668.8227 -0.00357056 1.000 1 1
49668.8854 -0.00476074 5.000 1 1
49670.7279 -0.00326538 1.000 1 1
49670.8197 -0.00598145 1.000 1 1
49670.8945 0.00701904 6.000 1 1
49671.7283 -0.00100708 1.000 1 1
49671.7994 -0.00503540 6.000 1 1
49671.8811 0.000000 1.000 1 1

~$ join -1 1 -2 9 -o 1.1,2.12,1.3,1.4,1.5 file3 source.dat
50093.5444 0.00570679 1.000 1 1
50093.5506 0.00424194 1.000 1 1
50093.5592 0.00100708 1.000 1 1
50093.5662 0.00372314 1.000 1 1

Это даст указание joinсопоставитьfile2(илиfile3)как первый файл и source.datкак второй файл в столбцах 1 и 9 соответственно(-1 1 -2 9)и вывести первый столбец первого файла, 12-й из второго, а затем остальные (, кроме исходного столбца 2 )из первого файла.

Редактировать

Похоже, что это -дополнительный вопрос к предыдущему вопросу , и вы хотите реализовать его с помощью awk. В этом случае попробуйте

~$ awk 'FNR==NR{v[$9]=$12;next} {print $1,v[$1],$3,$4,$5}' source.dat file2 
49667.8048 6.10352e-05 3.000 1 1
49667.8782 0.00546265 1.000 1 1
49668.7284 -0.00497437 1.000 1 1
49668.8227 -0.00357056 1.000 1 1
49668.8854 -0.00476074 5.000 1 1
49670.7279 -0.00326538 1.000 1 1
49670.8197 -0.00598145 1.000 1 1
49670.8945 0.00701904 6.000 1 1
49671.7283 -0.00100708 1.000 1 1
49671.7994 -0.00503540 6.000 1 1
49671.8811 0.000000 1.000 1 1

~$  awk 'FNR==NR{v[$9]=$12;next} {print $1,v[$1],$3,$4,$5}' source.dat file3
50093.5444 0.00570679 1.000 1 1
50093.5506 0.00424194 1.000 1 1
50093.5592 0.00100708 1.000 1 1
50093.5662 0.00372314 1.000 1 1

Или в цикле

for f in file*; do awk 'FNR==NR{v[$9]=$12;next} {print $1,v[$1],$3,$4,$5}' source.dat "$f" > "${f}_bvs"; done
1
28.07.2021, 11:26

Теги

Похожие вопросы