bdjhx 发表于 2018-8-26 06:20:43

日志分析 @shell

  #!/bin/bash
  sed -i 's/ //g' zhang1
  declare -i i=1
  LASTTIME="12345"
  for LINE in $(sed -n '/from=/p' zhang1|sed -n '/to=/p'|sed 's//\)/g')
  do
  LINE2=${LINE#*(}
  LINE3=${LINE2%%)*}
  LINE3=${LINE3:0:5}       截取LINE3从开始到第五个字符
  LINE4=${LINE2#*(}
  LINE5=${LINE4%%)*}
  LINE6=${LINE4#*(}
  LINE7=${LINE6%%)*}
  if [ $LINE3 = $LASTTIME ]
  then
  LINE3="-----"
  echo "$LINE3---$LINE5---$LINE7"
  i=$i+1
  else
  echo "       -"$i" messages------"
  LASTTIME=$LINE3
  echo "$LINE3---$LINE5---$LINE7"
  i=1
  fi
  done
  for h in (00..23)   可以设置 00开始
  LINE=sed -n '/from=/p' test.txt|sed -n '/to=/p'|sed 's//\)/g'| sed -n '/'"$time"'/p'|`sed 's//\)/g'`
  sed 中使用变量需要使用单引号 括着双引号
  这样赋值过程中,如果每行中存在空格   就会出现问题 ; 可以使用sed -i '/s/ //g' test.txt 预处理         cat /etc/passwd|while read line
  LINE2=${LINE#*(}       #从前向后   单个最短模式匹配
  LINE3=${LINE2%%)*}   %从后向前   单个最短模式匹配
  for LINE in $(egrep "error|Error" $1)   查找两个字符串
  #!/bin/bash
  #reading data from a file
  count=1
  cat /etc/passwd|while read line
  do
  echo "Line $count:$line"
  count=$[ $count+1 ]
  done
  这样赋值 不会出现 空格 干扰赋值的问题。

页: [1]
查看完整版本: 日志分析 @shell