Bash - 在文件日志中搜索

时间:2018-03-28 18:02:33

标签: bash sorting

我有一个bash脚本,可以保存文件中的日期(最后一次更改),文件名,可能的更改次数等(类似于ls输出)。

有没有办法在bash中搜索此文件,例如。获取最常用的文件或最新的文件,但只是文件名?

所以文件看起来像这样:

    2018-03-28 19:47:41   filename1
    2018-03-28 19:49:24   filename2
    2018-03-28 19:50:14   filename1
    2018-03-28 19:50:17   filename3

现在我想获取最后使用的文件,所以我将对它进行排序(它实际上已经排序),但我只想获取上次编辑的文件的文件名(最新日期) )。除了正则表达式之外还有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话:

head -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3     # First line of foo.txt, only the filename
tail -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3     # Last line 

会为您提供所需的行(感谢this)。如果foo.txt已经排序,那么这些将是最早的和最新的。

将它们存储在变量中:

firstfn="$(head -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3)"
echo "First filename is $firstfn"     # just a test
lastfn="$(tail -1 foo.txt | tr -s ' ' | cut -d ' ' -f 3)"

如果您有awk,则可以更简单地执行此操作(感谢this answer):

awk -- 'END { print $3; }' foo.txt

表示最后一行,或

awk -- '{ print $3; exit }' foo.txt

为第一行。同样处理变量,例如

firstfn="$(awk -- '{ print $3; exit }' foo.txt)"