SED Поиск и замена в Linux [дубликат]

Вы можете использовать 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
1
30.03.2016, 17:54
0 ответов

Теги

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