【问题标题】:Copy lines from one file to another, skipping multiple occurrences将行从一个文件复制到另一个文件,跳过多次出现
【发布时间】:2016-08-25 21:15:35
【问题描述】:

我有一个大文件 results.txt,我想从中取出某些行并将它们放入另一个文件中。我要取出的数据是一些变量,欧米茄和阿尔法。但是对于results.txt,results.txt中的每组数据都有两次出现omega和alpha,我只想要第二组数据。我不确定如何进行。我知道我应该使用 SED,但我不知道如何使用,因为我只找到了有关使用 sed 替换行的帮助。任何帮助,将不胜感激。非常感谢。

#

--- 抱歉,当我问这个问题时,我正在使用手机。不知道如何插入代码。 ---

所以我的文件看起来像

Very big list of useless output
.
.
.
Results 1: 
Omega = 121
Distance = 18.7037218936
Alpha = -1.05958217593e-05
Result 5 = 18983
Result 6 = 1231.903
-------------------------
Results 1: 
Omega = 121
Distance = 18.7037218936
Alpha = -1.05958217593e-05
Result 5 = 18983
Result 6 = 1231.903
-------------------------
Second useless output for the next data set
.
.
.

下一个数据集在两组结果之后开始。我有 600 个数据集。我想将每个数据集的第二组结果中的 Omega 和 Alpha 打印到其他文件中,最好是在两列中,我不知道这是否可能。

我尝试过使用 sed,但我发现的文档只讨论了替换我搜索的单词。感谢您的帮助!

【问题讨论】:

  • (1) 显示一小段样本输入和相应的所需输出。如果有任何对您很重要的特殊情况,请确保样本输入包括它们。 (2) 显示一些您尝试过的代码。如果没有任何代码,人们可能会认为您将 SO 视为一种代码编写服务。
  • wrt I know I should use SED - 不,您可能不应该这样做。 sed 用于在单个行上进行简单替换,仅此而已。用于任何其他文本处理的标准 UNIX 工具是 awk,因此您应该使用它。在您提供 minimal reproducible example 之前,我们不会知道,但包括简洁、可测试的样本输入和预期输出。

标签: bash sed output


【解决方案1】:

为你制作了一个测试文件:

$ cat > results.txt
foo
alpha 1
omega 1
foo
alpha 2
omega 2
foo
$ tac results.txt|grep -m 1 alpha; tac results.txt |grep -m 1 omega
alpha 2
omega 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多