shell - 去掉awk中单引号的特殊性
去掉awk中单引号的特殊性
2004-04-23 15:18 pm来自:Linux文档
现载:Www.8s8s.coM
地址:无名
文字
有如下文本,文件明为bufls
drwxrwsrwx gprs 512 GPRS
-rw-r----- lc 21307 K0918531.000
我现在想用awk将第三个域用单引号括取来,我的脚本如下:
#!/bin/sh
#tmptmp.sh
cat bufls | awk '{
printf "%s %s '%s' %s
",$1,$2,$3,$4
}'
但是并不能打印出',怎么才能去掉单引号的特殊性并打印出来的,help,thank!
在‘’里,`,$都被看成普通字符。所以,用转义符是无效的。
可以这样写:
awk "{printf "%s %s '%s',%s
",$1,$2,$3,$4}"
参看以前对awk引用shell环境变量的讨论。
To valentine:
俺照你说的试了试怎么不行啊,提示如下:
syntax error The source line is 1.
The error context is
{printf "%s %s '%s' >>> %s
",, <<<
awk: The statement cannot be correctly parsed.
The source line is 1.
怎么回事呢?
应该在$前加。
awk "{printf "%s %s '%s',%s
",$1,$2,$3,$4}"
改一下试试看。
哈哈,ok了