高效Shell操作技巧与实践
1. 数据处理与日志记录
在处理数据时,我们经常需要将合适的数据通过管道输入到while read循环中,并根据需要使用printf进行输出。例如,要打印主机名$HOSTNAME,后面跟一个制表符,再跟上last命令输出的非空行,可以使用以下命令:
$ last | while read i; do [[ -n "$i" ]] && printf "%b" "$HOSTNAME\t$i\n"; done若要将结果写入新的日志文件,可以这样操作:
$ last | while read i; do [[ -n "$i" ]] && printf "%b" "$HOSTNAME\t$i\n"; done > last_$HOSTNAME.log此外,也可以使用awk为每行添加文本:
$ last | awk "BEGIN { OFS=\"\t\" } ! /^\$/ { print \"$HOSTNAME\", \$0}" $ last | awk "BEGIN { OFS=\"\t\" } ! /^\$/ { print \"$HOSTNAME\", \$0}" > las