shell编程中awk的使用?
awk中如何使用变量,如下例所示:
echo "user:"
read USER
TMP_DATA=$(sed -n '1,$p' test.txt)
TMP_DATA=$(echo "$TMP_DATA" | awk '{if($1=="user") gsub($2,$USER); print $0}')
echo "$TMP_DATA" > test.txt
文件test.txt中的文本是以空格分开的
......
date 2005/02/12
user guest
......
想将guest置换成用户输入的客户名
应该怎么做?谢谢
问题点数:20、回复次数:10Top
1 楼fierygnu(va_list)回复于 2006-01-24 16:10:42 得分 0
传递变量给awk非常困难。你的应用用sed就可以了。试试
TMP_DATA=$(echo "$TMP_DATA" | sed "s/^user \.\*$/user $USER/"Top
2 楼jyl28()回复于 2006-01-24 17:01:07 得分 0
能解释下“\.\*$”的作用吗?Top
3 楼jyl28()回复于 2006-01-24 17:09:45 得分 0
用你给的脚本试了,没替换掉,代码有问题哟!Top
4 楼fierygnu(va_list)回复于 2006-01-24 17:11:00 得分 0
\是转义符。写错了,应该是[^ ]\*$意思是空格后所有字符。
因为用了双引号,所以要用转义符。Top
5 楼fierygnu(va_list)回复于 2006-01-24 17:12:20 得分 0
唔,没试,所以有问题正常:)
shell内部,把转义符去掉试试。Top
6 楼jyl28()回复于 2006-01-24 17:20:36 得分 0
不行Top
7 楼fierygnu(va_list)回复于 2006-01-24 17:23:31 得分 0
报错吗?后边少了个),加上了吗?Top
8 楼jyl28()回复于 2006-01-24 17:27:34 得分 0
没报错,是没替换掉Top
9 楼jyl28()回复于 2006-01-24 17:27:57 得分 0
括号已经加上了Top
10 楼fierygnu(va_list)回复于 2006-01-24 23:03:37 得分 20
没替换?去掉转义符了吗?这样:
TMP_DATA=$(echo "$TMP_DATA" | sed "s/^user [^ ].*$/user $USER/")Top




