简单的新手问题似乎在困扰我。 我查看了其他主题和资源,但我没有看到简单的答案。
我正在运行一个非常简单的(perl -lne)命令,它帮助我从pwebstats输出中查询特定数据,并输出为我的报告的线性.csv文件格式。
问题是:
是否有快速,干净的方式为文件名,年,月和日分配变量(即允许运行命令的人只需输入文件名($ FILENAME),年($年),月($ MONTH)和Day($ DAY)和执行而不必每次都改变perl -lne命令?)
命令示例:
zcat /opt/log/file/$Year/$Month/$FILENAME/sm/$FILENAME.$Year-$Month-$Day \
| perl -lne '/.{0,0}FILENAME PAX Total HTTP IP Packet Count.{0,6}/ && print $&' \
> /tmp/jhoney/$FILENAME-IPcountTMP.csv
zcat /opt/log/file/$Year/$Month/$FILENAME/sm/$FILENAME.$Year-$Month-$Day \
| perl -lne '/.{0,0}PAX HTTP Average TCP RTT.{0,20}/ && print $&' \
> /tmp/jhoney/$FIELNAME-TCPrttTMP.csv
paste -d , /tmp/jhoney/$FILENAME-IPcountTMP.csv /tmp/jhoney/$FILENAME-TCPrttTMP.csv \
> /tmp/jhoney/$FILENAME-PAXdata.csv
rm -r /tmp/jhoney/$FILENAME-TCPrttTMP.csv /tmp/jhoney/$FILENAME-IPcountTMP.csv
我知道答案正好看在我的脸上,但是,我正在学习perl和pyhton。
任何帮助将不胜感激。
答案 0 :(得分:1)
您持续调用Perl命令的是sh
命令。解析sh
中的命令行选项并非易事。如果你不介意转换到位置参数,那就简单多了。
用法:
PAXStat 2015 09 06 FILENAME
脚本:
#!/bin/sh
Year=$1
Month=$2
Day=$3
FILENAME=$4
zcat /opt/log/file/$Year/$Month/$FILENAME/sm/$FILENAME.$Year-$Month-$Day \
| perl -lne '/.{0,0}FILENAME PAX Total HTTP IP Packet Count.{0,6}/ && print $&' \
> /tmp/jhoney/$FILENAME-IPcountTMP.csv
zcat /opt/log/file/$Year/$Month/$FILENAME/sm/$FILENAME.$Year-$Month-$Day \
| perl -lne '/.{0,0}PAX HTTP Average TCP RTT.{0,20}/ && print $&' \
> /tmp/jhoney/$FIELNAME-TCPrttTMP.csv
paste -d , /tmp/jhoney/$FILENAME-IPcountTMP.csv /tmp/jhoney/$FILENAME-TCPrttTMP.csv \
> /tmp/jhoney/$FILENAME-PAXdata.csv
rm -r /tmp/jhoney/$FILENAME-TCPrttTMP.csv /tmp/jhoney/$FILENAME-IPcountTMP.csv