Чтобы сделать это, нужно создать переменную, содержащую одинарную кавычку, а затем использовать ее:
scanimage -L | gawk '/N650U/ {print gensub(q"`", "", "g", $2)}' q="'"
Однако, поскольку вы используете его в классе символов, это не сработает, поэтому вам нужно будет сделать следующее:
scanimage -L | gawk '/N650U/ {print gensub("[`'\'']", "", "g", $2)}'
<-- 1st pair --> <-- 2nd pair -->
Другая альтернатива при использовании bash
заключается в использовании $''
, который поддерживает , поддерживает экранирование одинарных кавычек
scanimage -L | gawk $'/N650U/ {print gensub("[`\']", "", "g", $2)}'
Все, что вы делаете во втором случае, - это создание пары одинарных кавычек непосредственно перед вашей буквальной одинарной кавычкой, экранирование одинарной кавычки, чтобы оболочка не интерпретировала ее, а затем создала еще одну пару одинарных кавычек после нее.
Пример с одинарной кавычкой в регулярном выражении
$ echo $'foo`\'' | awk '{gsub(/[o`'\'']/,"#")}1'
f####
Пример с одинарными кавычками вне регулярного выражения
$ echo "foo" | awk '{print q$0q}' q="'"
'foo'
Пример с одинарной кавычкой внутри $''
echo $'foo`\'' | awk $'{gsub(/[o`\']/,"#")}1'
f####