grep 最新文件字符串

Posted

技术标签:

【中文标题】grep 最新文件字符串【英文标题】:Grep latest file string 【发布时间】: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 ... 【参考方案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 秒,它显示了输出,谢谢! !!!

以上是关于grep 最新文件字符串的主要内容,如果未能解决你的问题,请参考以下文章

linux 实时查看日志 最新最后100行 tail

shell4

4-18 Linux中搜索文件的内容 --- grep

Linux查找字符串命令grep(转)

linux命令之——grep详解

在 php 中使用 grep 命令在特定文件中查找字符串