2

Я хотел бы сопоставить все строки в файле, который либо является моим словом префиксом, либо строка является префиксом моего слова. Например, поиск "abc" должен соответствовать:

a
аб
азбука
ABCD
abcxyz

но нет:

xabc
zzab
XAZ

Часть "мое слово - это префикс" - это просто, конечно, просто сопоставьте с " ^abc ", но я не нашел решения для бита "строка - это префикс моего слова". Пробовал что-то в awk, но не смог сделать содержимое строки частью регулярного выражения.

1 ответ1

1

Есть два случая, которые вам нужно обработать, когда строка короче вашей строки поиска или где она длиннее.

Когда он длиннее, вы хотите проверить, соответствует ли начало строки тестовой строке.

Когда он короче, вы хотите проверить, равно ли начало строки поиска строке.

В тех случаях, когда длины равны, любой метод работает.

awk -v search=abc 'length() > length(search) ? substr($0, 1, length(search)) == search : substr(search, 1, length()) == $0' inputfile

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .