Вы можете использовать этот awk
:
$ awk 'FNR==NR {a[$i]; next}; !($1 in a)' f2 f1
r002:21:10 21 YAAAATTTGC * = nM:21
r0012:21:10 21 LLAAAATTTGC * + XM:21
FNR == NR {a [$ i]; next}
он читает первый файл и сохраняет его содержимое в массив a
. ! ($ 1 в a)
при чтении второго файла проверяется, находится ли первое поле в массиве a
. Если нет, печатает строку. Объедините оба списка вместе, используя paste
. Вы можете сделать это следующим образом:
#!/bin/bash
paste list1 list2 | while IFS=$'\t' read -r L1 L2
do
echo "
Object host ${L1} {
import = "generic-service"
address = ${L2}
group = "Mom01-Ping"
}"
done
выход:
Object host sjc02-mfg-api01.example.com {
import = generic-service
address = 10.20.2.22
group = Mom01-Ping
}
Object host sjc02-mfg-api02.example.com {
import = generic-service
address = 10.20.2.23
group = Mom01-Ping
}
Object host sjc02-mfg-api03.example.com {
import = generic-service
address = 10.20.2.24
group = Mom01-Ping
}
Вы можете перебирать индексы пары массивов:
a1=(foo bar baz)
a2=(one two three)
for ((i=0; i < "${#a1[@]}"; i++)); do
echo "${a1[i]} => ${a2[i]}"
done
где ${#a1[@]}
— размер массива a1