95 awk
我想做以下事情
awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}'
Run Code Online (Sandbox Code Playgroud)
但是以这种方式逃避单引号是行不通的
awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}'
Run Code Online (Sandbox Code Playgroud)
这该怎么做?感谢帮助.
Ste*_*eve 144
这可能是你正在寻找的:
awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $1}'
Run Code Online (Sandbox Code Playgroud)
也就是说,当'\''你关闭开口',然后'通过逃避它打印文字,最后再打开'.
小智 71
使用表示单引号 \x27
像
awk 'BEGIN {FS=" ";} {printf "\x27%s\x27 ", $1}'
Run Code Online (Sandbox Code Playgroud)
mkl*_*nt0 34
另一种选择是将单引号作为awk变量传递:
awk -v q=\' 'BEGIN {FS=" ";} {printf "%s%s%s ", q, $1, q}'
Run Code Online (Sandbox Code Playgroud)
更简单的例子:
# Prints 'test me', *including* the single quotes.
$ awk -v q=\' '{print q $0 q }' <<<'test me'
'test me'
Run Code Online (Sandbox Code Playgroud)
对于小脚本,一种使其可读的可选方法是使用这样的变量:
awk -v fmt="'%s'\n" '{printf fmt, $1}'
Run Code Online (Sandbox Code Playgroud)
我发现在我不得不在输出中多次生成单引号字符并且\047使其完全不可读的情况下它很方便。