У меня есть текстовый файл, например так:Bash - отключить регулярное выражение в AWK заявлении
tets v1.0
psutil==4.1.0
tclclean==2.4.3
test v2.0
psutil==3.1.1
pyYAML==3.11
not_test
psutil==4.1.0
tclclean==2.8.0
и я использую AWK и ввод пользователя, чтобы найти текст в первой строке конкретного блока. Команда, которую я использую (где user_in является ввод пользователя) ...
awk -v ORS='\n\n' -v RS= -v FS='\n' "\$1 ~ \"^$user_in$\"" myfile.txt
Проблема заключается в том, что если пользователь вводит «*», оператор AWK собирается принять его как регулярное выражение и дайте мне все три блока, но я не хочу, чтобы что-то выводилось, так как оно не соответствует буквальным буквам.
Что я пытаюсь сказать, есть способ отключить регулярное выражение в awk и взять каждый символ в буквальном ключе (так же, как fgrep)?
Я был на самом деле ищет для случая, когда $ 1 является строкой, ничего больше не меньше. Я бы хотел, чтобы было возможно обратное сбрасывание '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' было бы похоже на '$ 1 ==" \^$ user_in \ $ "', но оно, похоже, не работает. Но ваш код работает отлично! – TheGirrafish
Каждый раз, когда вы пытаетесь отключить все метасимволы регулярного выражения в любом инструменте, у вас неправильный подход, поскольку вы действительно хотите просто выполнить строку, а не регулярное выражение, сравнение.Рад, что он работает на вас. –