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处理完文件后做的后续动作。
这里,$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本回答被提问者采纳