我自己过滤了一个log文件内容形式如下: 16:23:00 8.2% 1773620k 16:23:01 3% 1770024k 16:23:02 5.7% 1766272k 16:23:03 4% 1766160k 16:23:04 7.9% 1775436k 16:23:05 2.5% 1775488k 16:23:06 3.9% 1770340k 上述内容为时间/cpu使用量/内存使用量,我想将这三个信息显示在一行中,如下: 16:23:00 8.2% 1773620k 16:23:01 3% 1770024k 请问能帮帮兄弟吗?
2012-01-31 20:58
提问者采纳
先出个笨办法,抛砖引玉吧。 假设log存储在log.txt, 处理脚本为col2line.sh. root@ubuntu:~/share/shfiles# cat col2line.sh #!/bin/bash declare -i i=0 file=$(cat $1) for col in $file; do i=i+1 if [ $i -eq 1 ]; then col1=$col elif [ $i -eq 2 ]; then col2=$col elif [ $i -eq 3 ] ; then echo -ne "$col1 $col2 $col" echo i=0 fi done root@ubuntu:~/share/shfiles# ./col2line.sh log.txt 16:23:00 8.2% 1773620k 16:23:01 3% 1770024k 16:23:02 5.7% 1766272k 16:23:03 4% 1766160k 16:23:04 7.9% 1775436k 16:23:05 2.5% 1775488k 16:23:06 3.9% 1770340k root@ubuntu:~/share/shfiles# 刚才又想出一种稍微简单的方法: #!/bin/bash while read col1 && read col2 && read col3; do echo -ne "$col1 $col2 $col3" echo done <$1