【问题标题】:Grep latest file stringgrep 最新文件字符串
【发布时间】:2016-05-18 12:37:38
【问题描述】:

系统:AIX 7.1

假设我有一个包含以下文件的文件夹:

我需要的文件总是有这个前缀sapemea_postatus.log.xxxxxxxx,在它们里面我们总是有一个数字(集合号),像这样:

我总是有这样的问题

嘿,我们最后一个收藏号是哪个?

所以我总是必须打开 FTP,导航到文件夹,过滤列以在顶部显示最新的,查找最新的 sapemea_postatus.log 文件,下载并检查记事本++。

所以我的问题是:有没有办法制作 grep 命令,我可以在其中过滤这些文件,获取最新的文件,并显示这个集合号?谢谢!

【问题讨论】:

  • ls -tr > 文件; cat `tail -1 FILES` | grep ...

标签: linux grep aix


【解决方案1】:
#!/bin/bash

latest_collection=0

regex="Collection:[ ]*([0-9]+)"

for log in sapemea_postatus.log.*; do

    [[ $(cat $log) =~ $regex ]]
    collection="${BASH_REMATCH[1]}"

    if [[ $collection > $latest_collection ]]; then
        latest_collection=$collection
        latest_log=$log
    fi
done

echo "Latest log: $latest_log (number $latest_collection)"

【讨论】:

  • 谢谢,我会检查是否可以在 AIX 服务器中创建一个文件(如果他们允许的话)并试试这个!
  • 如果服务不允许您创建文件,那么您实际上可以将脚本作为单行运行,因为缩进在 Bash 中没有意义。启动bash,如果它不是系统的默认shell,然后执行latest_collection=0; regex="Collection:[ ]*([0-9]+)"; for log in sapemea_postatus.log.*; do [[ $(cat $log) =~ $regex ]]; collection="${BASH_REMATCH[1]}"; if [[ $collection > $latest_collection ]]; then latest_collection=$collection; latest_log=$log; fi; done; echo "Latest log: $latest_log (number $latest_collection)"
  • 我写了 bash 并回车,然后把所有的行都粘贴到了那里……现在如何执行?对不起,我真的是 aix 的初学者
  • 你又按回车了。像运行命令一样运行这一长行。
  • 非常感谢!我以为 Enter 只会添加一行,因为它添加了一行并且什么也没发生,但这是因为搜索需要一些时间来处理...我按 Enter 并等待了 10 秒,它显示了输出,谢谢! !!!
猜你喜欢
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2023-03-27
相关资源
最近更新 更多