【问题标题】:How to read specific line of files with a Linux command or Shell Script如何使用 Linux 命令或 Shell 脚本读取特定的文件行
【发布时间】:2015-06-14 15:09:00
【问题描述】:

我需要能够读取特定目录中所有文件的倒数第二行。

这些文件是日志文件,该特定行包含已运行任务的状态、“成功”、“失败”、“警告”。

我需要在报告中提取它以将其转储。

在这个阶段我只想拉数据,所以整条线,并且会担心之后的处理。

由于未设置行号,它们是不规则的,我正在考虑使用“while”循环来执行此操作,因此它会贯穿整个过程,但实际上我并没有读取最后两行,而且,我可以读取 1 个文件而不是全部。

关于一个不错的小脚本有什么想法吗?

谁知道这是否可以只用一个 linux 命令来完成?

【问题讨论】:

  • 查看Shell/Bash Command to get nth line of STDOUT 了解不同的方法。
  • @AlbertoZaccagni 他不想处理 STDOUT,他想遍历目录中的所有文件。
  • 我知道他不想处理 STDOUT,但该问题的答案提供了许多不同的方法来解决 OP 所面临的核心问题。但是投票结束这个可能没有意义,我会撤回我的投票。
  • 谢谢大家,我想浏览一个目录中的所有 txt 文件,并读取每个文件中的所有行,然后说,在这个阶段,只回显倒数第二行,就像最后一样'日志结束'

标签: linux shell loops


【解决方案1】:

使用tail 命令获取最后两行,然后使用head 命令获取其中的第一行:

for file in $DIR/*; do
    tail -2 "$file" | head -1
done

【讨论】:

  • 也许您也想在文件名前面加上? echo -n "$file: "tail 命令之前,或者类似的东西?
  • 从这个问题上看不清楚他是否需要这个
  • 很好,谢谢巴马尔。我实际上是在做这样的事情,但是“在读取行时”,但只读取了一个文件。干杯。
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 1970-01-01
相关资源
最近更新 更多