【问题标题】:Use bash to extract data between two regular expressions while keeping the formatting使用 bash 在两个正则表达式之间提取数据,同时保持格式不变
【发布时间】:2016-09-20 07:31:50
【问题描述】:

但我对使用 awk 命令的一小段代码有疑问。我在任何地方都没有找到答案/解决方案。

我正在尝试解析输出文件并提取第一个表达式(包括)ATOMIC 和第二个表达式(不包括)Bond 之间的所有数据。该数据将被发送到一个新文件$1_geom。到目前为止,我有以下内容:

`awk '/ATOMIC/{flag=1;next}/Bond lengths in Bohr/{flag=0}flag' $1` >> $1_geom

这个脚本会为我提取正确的数据,但是有两个问题:

  1. ATOMIC 行未与数据一起提取

  2. 数据被提取并附加到一行。我希望数据保留解析文件中的格式(5 列,可变数量的行)。请参阅附件以查看视觉效果。 Visual Example Attachment。是否有其他方法可以附加数据(>> 除外)以便我可以保持格式?

感谢任何帮助,谢谢。

【问题讨论】:

  • 为什么命令是反引号? `

标签: bash awk


【解决方案1】:

next 导致第一个匹配被跳过;如果你不想要,就把它拿出来。

反引号本身就是一个 shell 语法错误(除非你的 Awk 脚本恰好产生了有效的 shell 命令)。我猜你的实际脚本中有 useless echo 或类似的东西,可以解除错误,但会产生你描述的症状。

【讨论】:

  • 您的屏幕截图似乎证实了我的猜测。当您真正想要显示的是文字时,请不要发布图片。
  • 感谢您的帮助!这是 csh 脚本中代码的一部分,我在这一行前面确实有一个“回声”。删除“回声”使其完美运行。
【解决方案2】:

这是 csh 脚本中代码的一部分,我在这一行前面确实有一个“echo”。删除“回声”使其完美运行并解决了我遇到的 2 个问题。

【讨论】:

  • 顺便说一句,您会多次感谢自己从csh 切换到理智的外壳。 tchrist's old FAQ 拥有所有的污垢。
猜你喜欢
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多