Ответ 1
Возможно, это то, что вы ищете:
awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $1}'
То есть, с '\''
вы закрываете открытие '
, а затем печатаете литерал '
, экранируя его и, наконец, снова открывайте '
.
Я хочу сделать следующее
awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}'
Но экранирование одиночной кавычки таким образом не работает
awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}'
Как это сделать? Спасибо за помощь.
Возможно, это то, что вы ищете:
awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $1}'
То есть, с '\''
вы закрываете открытие '
, а затем печатаете литерал '
, экранируя его и, наконец, снова открывайте '
.
Одиночная кавычка представлена с помощью \x27
Как в
awk 'BEGIN {FS=" ";} {printf "\x27%s\x27 ", $1}'
Другой вариант - передать одиночную кавычку как переменную 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'
awk 'BEGIN {FS=" "} {printf "\047%s\047 ", $1}'
$ cat > test.in
foo
bar
$ awk 'BEGIN {FS=" ";} {printf "'"'"'%s'"'"' ", $1}' test.in
'foo' 'bar'
Это: '"'"'
в двойных кавычках.