使用 awk 或 grep 选择 cron 条目

发布于 2024-12-11 06:12:04 字数 495 浏览 0 评论 0原文

我想处理 cron 文件,其中包含时间和 cron 条目到数据库的不同列中。

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

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

使用 awk 很容易对 cron 的前 5 个占位符进行 awk。但如何选择实际的 cron 条目呢? 在上面的示例中,我想选择从“string”到“$string”的所有内容 我还想选择标准和错误输出文件路径。即 success.txt 和 err.txt

更新:

awk '{print $NF}'

以上适用于最后一个变量,但以下不适用于查找倒数第二个变量。

awk '{print $NF-2}'

I want to process cron file with the time and cron entry into different columns of DB.

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

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

It is easy to awk the first 5 placeholders of the cron using awk. But how do I select the actual cron entry?
In the above example I want to select every thing from "string" to "$string"
I do also want to select the standard and error out file paths. i.e. success.txt and err.txt

update:

awk '{print $NF}'

The above works for the last variable, but the following does not to find the second-last.

awk '{print $NF-2}'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别把无礼当个性 2024-12-18 06:12:04

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

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

我相信这需要 GNU 版本的 cut,因为 --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 都被重定向
  • 输出和错误文件的名称中不存在空格

A simple approach to get rid of the initial fields is to use cut:

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

I believe this requires the GNU version of cut, as the --complement flag is an extension.

I'd use awk to split the rest into fields:

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) 
}'

Note that this approach involves a few assumptions:

  • whitespace can be standardized to single spaces
  • both stdout and stderr are redirected
  • no spaces are present in the names for the output and error files
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文