在perl -lne中分配年,月和日变量

时间:2015-09-07 16:20:04

标签: sh

简单的新手问题似乎在困扰我。 我查看了其他主题和资源,但我没有看到简单的答案。

我正在运行一个非常简单的(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。

任何帮助将不胜感激。

1 个答案:

答案 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