工作需要,需要过滤出含有指定的IP段的话单,编写的脚本名字叫 filter.sh
#!/bin/bash
TARGET_PATH=/data/flume/flume_exec_log/Dst_for_flume.txt 此处直接写绝对路径的指定输出文件
PATTERN1="133.23.10[123456]." 此处为过滤的字段,因为话单中肯定是包含IP的,所以最后边的匹配0~255没有写
PATTERN2="133.23.8[0-9]."
PATTERN3="133.45.9[01]."
PATTERN4="19.12.15.18[34]."
PATTERN4="19.124.0."
if [ ! $# -eq 1 ];then
echo "$0 <file-path>"
exit 1
fi
grep -e $PATTERN1 -e $PATTERN2 -e $PATTERN3 -e $PATTERN4 $1 >> ${TARGET_PATH}
---------------
以上是第一版本
因为现场是生成的压缩话单,需要在当天生成的压缩话单中提取出需要的话单文件,生成指定的文件。
-----最终的版本为:
#!/bin/bash
TARGET_PATH=/data/flume/flume_exec_log/Dst_for_flume.txt
PATTERN1="132.35.10[123456]."
PATTERN2="132.35.8[0-9]."
PATTERN3="132.35.9[01]."
PATTERN4="10.1.1.18[34]."
PATTERN4="10.124.0."
zcat 2017051915*.gz | zgrep -e $PATTERN1 -e $PATTERN2 -e $PATTERN3 -e $PATTERN4 $1 >> ${TARGET_PATH}
-------
以上生成的文件,直接在生成压缩话单的路径下运行,之后打开另一个窗口,tail -f /data/flume/flume_exec_log/Dst_for_flume.txt 观察提取进度,,,,最后得到所需话单.