【问题标题】:Move a set of rows sperated by a blank line from a file to new file having a specific key [duplicate]将一组由空行分隔的行从文件移动到具有特定键的新文件[重复]
【发布时间】:2020-02-28 17:32:13
【问题描述】:

我有包含如下行的文件。如果一组行中的任何行包含关键字 SEDS2-TOP,我想将一组行移动到一个新文件。每组由空行分隔的行。

0.00  600.00  2214.28   785.71 1.00000 SEDS1-BOTTOM
0.00  600.00  2214.28   785.71 1.00000 SEDS1-TOP
0.00  600.00  1500.00     0.00 1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP
0.00  600.00  2218.64   790.51 1.00000 SEDS1-BOTTOM
0.00  600.00  2218.64   790.51 1.00000 SEDS1-TOP
0.00    0.00  600.00  1500.00  1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP
0.00  600.00  1500.00     0.00 1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP

示例输出文件应该有

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP
0.00  600.00  2218.64   790.51 1.00000 SEDS1-BOTTOM
0.00  600.00  2218.64   790.51 1.00000 SEDS1-TOP
0.00    0.00  600.00  1500.00  1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP
0.00  600.00  1500.00     0.00 1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP

【问题讨论】:

  • 提供样本输入和预期输出以阐明需求是一种很好的方式。还建议包括您试图展示您的努力的内容。 BR。

标签: bash shell


【解决方案1】:

awk 救援:

$ awk 'BEGIN { ORS=RS="\n\n" } /SEDS2-TOP/' input.txt
0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP
0.00  600.00  2218.64   790.51 1.00000 SEDS1-BOTTOM
0.00  600.00  2218.64   790.51 1.00000 SEDS1-TOP
0.00    0.00  600.00  1500.00  1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP
0.00  600.00  1500.00     0.00 1.00000 WATER-BOTTOM

0.00  600.00  3446.97  1757.08 1.00000 SEDS2-TOP

这里的技巧是将RS 设置为两个换行符,以便组之间的每个空白行都表示一个新记录,而不是默认的每行都是一个。然后它只是打印出包含该字符串的记录。

如果使用 GNU awk,请考虑将 /\<SEDS2-TOP\>/ 用于正则表达式以避免匹配 SEDS2-TOPPER 之类的内容(如果这可能是您的数据的问题)。

【讨论】:

  • 我想从原始文件中移动这些行,上面的代码正在复制。
  • 我已经尝试 awk 'BEGIN { ORS=RS="\n\n" "mv" } /SEDS2-TOP/' input.txt,通过插入移动命令但它不起作用
  • @rehman 移动是指从原始文件中删除这些块吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2015-11-18
  • 2017-10-06
  • 2022-11-28
相关资源
最近更新 更多