#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
или существуют дополнительные требования к формату строки?