使用awk或grep选择cron条目

时间:2011-10-20 10:11:10

标签: sed awk grep

我想用时间和cron条目处理cron文件到不同的DB列。

cat root | awk '{print $1, $2, $3, $4, $5, $6}'

47 * * * * string=`find somefile`; echo $string > success.txt 2> err.txt

使用awk轻松唤醒cron的前5个占位符。但是如何选择实际的cron条目呢? 在上面的例子中,我想从“string”到“$ string”选择所有东西 我还想选择标准和错误输出文件路径。即success.txt和err.txt

更新

awk '{print $NF}'

以上适用于最后一个变量,但以下内容并未找到倒数第二个。

awk '{print $NF-2}'

1 个答案:

答案 0 :(得分:0)

摆脱初始字段的一种简单方法是使用cut

cut -d' ' --complement -f1-5

我认为这需要GNU版本的剪切,因为--complement标志是扩展名。

我使用awk将其余部分分成字段:

awk '{ 
    outfile=$(NF-2)
    errfile=$NF
    for(n=NF; n>(NF-4); n--) { $n = ""}
    printf("command: %s\noutput: %s\nerror: %s\n", $0, outfile, errfile) 
}'

请注意,这种方法涉及一些假设:

  • 空格可以标准化为单个空格
  • stdout和stderr都被重定向
  • 输出和错误文件的名称中没有空格