这段 LINUX SHELL 什么意思,用BASH写的。

do
awk -F: '{OFS=":"} {if ($3 == "'"$old"'") {$3 = "'"$new"'"}} {print}' $PASSWD > $TMP
cp $TMP $PASSWD
done

第1个回答  2012-03-27
代码不完整,但可以看出这是一个循环。
这里,$PASSWD, $TMP 是表示文件名的变量,$old, $new是表示字符串的变量。
循环里用awk处理$PASSWD这个文件,以冒号:为分割符将一行分割为多个记录(-F:)。
若该文件某行的第三个字段为"$old",就将它替换为"$new",然后打印整行。
OFS=":" 指定了打印输出的格式,仍然是以冒号分隔各个字段。
打印输出最后重定向到$TMP文件里,再用$TMP文件覆盖$PASSWD文件。

其实,语句里省掉了BEGIN和END代码块标志。
awk -F: 'BEGIN{OFS=":"} {if ($3 == "'"$old"'") {$3 = "'"$new"'"}} END{print}' $PASSWD > $TMP
BEGIN是在awk处理一个文件之前所做的前置动作。
END是awk处理完文件后做的后续动作。
第2个回答  2012-03-27
将PASSWD文件中,符合第三列数值为$old的替换为$new本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网