Я сделаю некоторые предположения (с которыми вы, похоже, согласны в своем вопросе).
- Файл ключей представляет собой CSV ключей (список ключевых слов через запятую)
- Файл данных имеет ключи в качестве первых слов, начиная с первого столбца
- этим ограничением можно управлять с помощью некоторых вещей в скрипте
- Файл данных не имеет двухстрочных строк, начинающихся с одного и того же ключевого слова.
- если это ограничение нарушено, вы получите все соответствующие строки,
когда будете искать ключ. - это может быть обработано с "
| tail -1
", чтобы показать только первый матч (скажем)
- если это ограничение нарушено, вы получите все соответствующие строки,
- Вы начинаете говорить
rtf
файлы, но отмечаете вопрос какtext
.
Если у вас есть файлы в расширенном текстовом формате, вы должны конвертировать их в текстовые файлы для этой цели.
вот сценарий для вас,
#! / Bin / Баш IFS = "" # -> искать разделенные запятыми слова в key.txt для k в $ (sed 's | ||' key.txt) # -----------> чтобы упростить поиск делать grep "^ $ k" data.txt # ----> искать ключевые слова в начале каждой строки сделанный
Вот key.txt
ваш первый файл и data.txt
ваш второй файл. Цикл сортирует вывод в порядке ключей. Команда удаляет все пробелы в вашем файле, чтобы упростить поиск.for
sed
key.txt
Обновление на неанглийских символов (именно поэтому она, кажется, вы говорите, файл в формате RTF):
Посмотрите iconv
и получить RTF преобразовать в UTF-8 - Я думаю, что grep
может справиться с этим.
Если это то, что вы хотите сделать, ваш вопрос должен быть перефразирован как