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 最新文件字符串的主要内容,如果未能解决你的问题,请参考以下文章