Как избежать одиночной цитаты внутри awk Я хочу сделать следующее awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}' Но экранирование одиночной кавычки таким образом не работает awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}' Как это сделать? Спасибо за помощь. Ответ 1 Возможно, это то, что вы ищете: awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $1}' То есть, с '\'' вы закрываете открытие ', а затем печатаете литерал ', экранируя его и, наконец, снова открывайте '. Ответ 2 Одиночная кавычка представлена с помощью \x27 Как в awk 'BEGIN {FS=" ";} {printf "\x27%s\x27 ", $1}' Источник Ответ 3 Другой вариант - передать одиночную кавычку как переменную awk: awk -v q=\' 'BEGIN {FS=" ";} {printf "%s%s%s ", q, $1, q}' Пример: # Prints 'test me', _including_ the single quotes. awk -v q=\' '{print q $0 q }' <<<'test me' Ответ 4 awk 'BEGIN {FS=" "} {printf "\047%s\047 ", $1}' Ответ 5 $ cat > test.in foo bar $ awk 'BEGIN {FS=" ";} {printf "'"'"'%s'"'"' ", $1}' test.in 'foo' 'bar' Это: '"'"' в двойных кавычках.
Ответ 1 Возможно, это то, что вы ищете: awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $1}' То есть, с '\'' вы закрываете открытие ', а затем печатаете литерал ', экранируя его и, наконец, снова открывайте '.
Ответ 2 Одиночная кавычка представлена с помощью \x27 Как в awk 'BEGIN {FS=" ";} {printf "\x27%s\x27 ", $1}' Источник
Ответ 3 Другой вариант - передать одиночную кавычку как переменную awk: awk -v q=\' 'BEGIN {FS=" ";} {printf "%s%s%s ", q, $1, q}' Пример: # Prints 'test me', _including_ the single quotes. awk -v q=\' '{print q $0 q }' <<<'test me'
Ответ 5 $ cat > test.in foo bar $ awk 'BEGIN {FS=" ";} {printf "'"'"'%s'"'"' ", $1}' test.in 'foo' 'bar' Это: '"'"' в двойных кавычках.