Bash: Найдите строку, похожую на строку поиска

#bash #search

Вопрос:

У меня есть csv-файл, такой как:

 col1,col2
A,100foo
A,104foo
B,110bar
C,111bar
 

Теперь у меня есть строка поиска

 B,112
 

Который должен вернуть строку:

 B,110bar
 

Или строка поиска

 A,103
 

Которые вернутся A,100foo

Поэтому я всегда ищу строку «меньше», чем строка поиска.

Второй столбец-это не число, поэтому я не могу выполнять математические операции.

Мне больше нужно что-то вроде «неточного поиска».

Могу ли я сделать это в Bash? Файл может быть отсортирован в алфавитном порядке, поэтому я думал о чем-то вроде «grep-подобного» и о том, чтобы взять строку раньше.

Комментарии:

1. agrep ? tre-agrep ?

2. Выражает ли это то, что вы хотите: «первое поле строки поиска равно первому полю в файле, второе поле строки поиска > второе поле файла», где > > лексикографически больше, чем

Ответ №1:

На самом деле не совсем ясно, насколько неточным может быть поиск. Будет ли выполняться поиск по всем строкам, начинающимся с одного и того же символа строки поиска?

 str = "B,110"
grep "^${str:0:1}" csvfile
 

или существуют дополнительные требования к формату строки?