我想做以下事情
awk 'BEGIN {FS=" ";} {printf "'%s' ", $1}'
但是以这种方式逃避单引号是行不通的
awk 'BEGIN {FS=" ";} {printf "\'%s\' ", $1}'
这该怎么做?感谢帮助。
这可能是你正在寻找的:
awk 'BEGIN {FS=" ";} {printf "'\''%s'\'' ", $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'
'test me'
awk 'BEGIN {FS=" "} {printf "\047%s\047 ", $1}'
对于小脚本,使其可读的可选方法是使用如下变量:
awk -v fmt="'%s'\n" '{printf fmt, $1}'
我发现在我不得不在输出中产生多次单引号字符并且\ 047使它完全不可读的情况下很方便