У меня есть текстовый файл с большим количеством строк в этом формате (линии между каждыми двумя # определяется как группа):держать группы линий с определенными ключевыми словами (Баш)
# some str for test
hdfv 12 9 b
cgj 5 11 t
# another string to examine
kinj 58 96 f
dfg 7 26 u
fds 9 76 j
---
key.txt:
string to
---
output:
# another string to examine
kinj 58 96 f
dfg 7 26 u
fds 9 76 j
Я должен искать некоторые ключевые слова (string, to) из строк, начинающихся с #, и если ключевые слова не существуют в key.txt (файл с двумя столбцами), тогда я должен удалить эту строку и следующие строки (из этой группы). Я написал это код без результата! (ключевые слова объединены во входном файле в качестве примера)
cat input.txt | while IFS=$'#' read -r -a myarray
do
a=${myarray[1]}
b=${myarray[0]}
unset IFS
read -r a x y z <<< "$a"
key=$(echo "$x $y")
if grep "$key" key.txt > /dev/null
then
echo $key exists
else
grep -v -e "$a" -e "$b" input.txt > $$ && mv $$ input.txt
fi
done
Может кто-нибудь мне помочь?
Обновлен нам данные из 'key.txt' – Jotne
Добавлена второго ответа исправить недостающую' '# и удалить дополнительные пустые строки. Где удаленные пробелы? – Jotne