Может быть, я что-то упустил, но я не понимаю, почему вы не можете использовать awk
, поскольку он может полностью
Единственный хороший «алгоритм», который я могу придумать, - это вычитать числамежду 5-й и 6-й двойной кавычкой ("), как мне это сделать?
Допустим, что file1 это:
"DATABASE","Alloc MB","Use MB","Free MB","Temp MB","Hostname"
"EUROPE","9133508","8336089","797419","896120","server3"
"ASIA","3740156","3170088","570068","354000","server5"
"AFRICA","4871331","4101711","769620","318412","server4"
И file2 это:
"DATABASE","Alloc MB","Use MB","Free MB","Temp MB","Hostname"
"EUROPE","9133508","8335089","797419","896120","server3"
"ASIA","3740156","3170058","570068","354000","server5"
"AFRICA","4871331","4001711","769620","318412","server4"
Команда
awk -F'[",]' 'NR>2&&NR==FNR{db[$2]=$8;next}FNR>2{print $2, db[$2]-$8}' file1 file2
дает вам результат:
EUROPE 1000
ASIA 30
AFRICA 100000
Вы также можете использовать этот ответ для более правильной работы с кавычками в awk.
Если ваша версия awk не поддерживает несколько разделителей полей, вы можете попробовать это:
awk -F, 'NR>2&&NR==FNR{db[$1]=$3;next}FNR>2{print $1, db[$1]-$3}' <(sed 's,",,g' file1) <(sed 's,",,g' file2)