【问题标题】:How to print specific line of a group of files in defferent directories如何打印不同目录中一组文件的特定行
【发布时间】:2016-03-05 02:35:40
【问题描述】:

我将打印位于不同子目录中的文件列表的特定行。假设我们有一个主文件夹和 t001 到 t010 子文件夹。我每个都有一个 data.text 。 如果所有文件都在一个目录中,我们可以简单地从 here 获取:

awk 'FNR==3' Files*

但这里的文件位于子目录中。你有什么主意吗?

编辑: 我想我们可以输入:

awk 'FNR==3' ./t*/data.txt

在这里我找不到包含我要查找的数据的文件。当我使用:

grep -r -A 1 "string" *

我可以在string 之后的行中看到我要查找的内容,还可以找到目录,但在这里我只需要字符串下方的行。

【问题讨论】:

  • 感谢您的努力!!
  • 这不是掌声是吗?! :-)
  • stringFNR == 3是什么关系?
  • string 在第二行。

标签: bash awk sed grep glob


【解决方案1】:
find . -name "data.txt" -exec awk 'FNR==3' '{}' \;

how to run find -exec

编辑

如果您还需要在 grep 输出中打印文件名,那么您可以使用 FILENAME 来完成,就像这样

find . -name "data.txt" -exec awk 'FNR==3 {print FILENAME ": " $0}' '{}' \;

awk 'FNR==3 {print FILENAME ": " $0}' ./t*/data.txt

man awk 中查找FILENAME 以获取更多信息。

【讨论】:

  • 谢谢。但这里和我的方式都有问题。当我们打印第一行查看数据时,文件的目录是未知的。我想查看第一行,然后转到包含我要查找的文件的文件。
  • @Abolfazl 用我认为您正在寻找的内容更新了我的答案
  • 太棒了!是的,这就是我环顾四周。
猜你喜欢
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
  • 2017-08-27
  • 2011-03-20
  • 2021-12-03
  • 1970-01-01
  • 2016-08-17
  • 2012-09-30
相关资源
最近更新 更多