首页 > 解决方案 > SED 删除两个字符实例之间的所有内容

问题描述

我有一个带有 appr 的数据库转储。6.0000 行。它们看起来都是这样的:

{"student”:”12345”,”achieved_date":1576018800,"expiration_date":1648677600,"course_code”:”SOMECODE,”certificate”:”STRING WITH A LOT OF CHARACTERS”,”certificate_code”:”ABCDE,”certificate_date":1546297200}

"STRING WITH A LOT OF CHARACTERS" 是一个包含大约 600.000 个字符的字符串 (!)

我需要删除每一行上的那些字符...我尝试过:

sed 's/certificate\":\"*","certificate_code//'

但它似乎没有成功。

我也找不到可以在这里工作的答案,所以请联系您,希望您能帮助我.. 这最好用 SED 完成吗?或任何其他方法?

现在我不在乎“有很多字符的字符串”上的所有字符是否被删除或替换为 IE a 0,即使这对我来说也可以使用;)

的输出od -xc filename | head是:

0000000    2d2d    4d20    5379    4c51    6420    6d75    2070    3031
          -   -       M   y   S   Q   L       d   u   m   p       1   0
0000020    312e    2033    4420    7369    7274    6269    3520    372e
          .   1   3           D   i   s   t   r   i   b       5   .   7
0000040    322e    2c39    6620    726f    4c20    6e69    7875    2820
          .   2   9   ,       f   o   r       L   i   n   u   x       (
0000060    3878    5f36    3436    0a29    2d2d    2d0a    202d    6f48
          x   8   6   _   6   4   )  \n   -   -  \n   -   -       H   o
0000100    7473    203a    3231    2e37    2e30    2e30    2031    2020
          s   t   :       1   2   7   .   0   .   0   .   1

希望你能帮我!

标签: mysqllinuxsedvi

解决方案


如果您正在使用bash,请尝试以下操作:

q=$'\xe2\x80\x9d'
sed "s/certificate${q}:${q}.*${q},${q}certificate_code//" file

结果:

{"student”:”12345”,”achieved_date":1576018800,"expiration_date":1648677600,"course_code”:”SOMECODE,””:”ABCDE,”certificate_date":1546297200}

推荐阅读