Вы можете использовать Awk
скрипт для этого. Проанализируйте оба файла, пропуская заголовки, создайте хэш-карту содержимого file2
и file1
, если присутствует значение столбца 1 из другого файла, напечатайте его значение (иначе) напечатайте пользовательскую строку 00
, как вы показали.
#!/usr/bin/env awk
BEGIN {
printf "hour value1 value2\n"
}
NR>1 && FNR==NR {
hash[$1]=$2; next
}
FNR>1 {
if ($1 in hash) {
printf "%s\t%s\t%s\n",$1,$2,hash[$1]
} else {
printf "%s\t%s\t%s\n",$1,$2,"00"
}
}
Запустите этот скрипт как
awk -f script.awk file2 file1
hour value1 value2
01 25 03
02 24 00
03 24 05
04 27 00
05 30 03
, что должно дать вам необходимый вывод.
То же самое можно сделать и с однострочной нечитаемой версией командной строки.
awk 'BEGIN{printf "hour value1 value2\n"} NR>1 && FNR==NR{hash[$1]=$2; next} FNR>1 { if ($1 in hash) {printf "%s\t%s\t%s\n",$1,$2,hash[$1] } else {printf "%s\t%s\t%s\n",$1,$2,"00"} }' file2 file1