【问题标题】:How to delete all characters up to and including a specified character in a text file?如何删除文本文件中包含指定字符的所有字符?
【发布时间】:2020-07-02 01:57:15
【问题描述】:

快速 sed 问题

如何在文本文件中删除所有字符,包括整个文件中找到的第一个“[”,仅此而已?

我试过了

sed "s/^[^\[]*\[//" example.json

但它会删除每一行的所有文本。

或者,

我有一组文件是 JSON 文档集。我正在尝试将它们导入到 elasticsearch 中,但文件中的第一个文档是一个信息文档,其布局非标准,导致其余文档的导入混乱。我正在尝试删除第一个文档,以便后续文档可以正确加载。

这是文件:

https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2014-01-01&endtime=2014-01-02

【问题讨论】:

  • 请在您的问题中添加示例输入(无描述、无图像、无链接)以及该示例输入所需的输出(无评论)。
  • GNU sed:sed -z 's/^[^[]*\[//' example.json > example.out.json,见demo
  • POSIX sed:sed '/^[^\[]*\[/!d;s///;:1;n;b1'

标签: json bash sed


【解决方案1】:

对于单个字符串上的简单 s/old/new 以外的任何内容,只需使用 awk。这将在每个 UNIX 机器上的任何 shell 中使用任何 awk:

awk 'sub(/[^[]*\[/,""){f=1} f' file

【讨论】:

    【解决方案2】:

    我使用了两个 sed 命令来实现“删除所有字符,包括找到的第一个 '['”

    sed -n '/\[/,$p' example.json | sed -r '1 s/[^\[]*\[(.*)/\1/'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2020-07-27
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多