当前位置:Linux教程 - Shell - shell - 去掉awk中单引号的特殊性

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了