【问题标题】:Can't split a text file based on separator无法根据分隔符拆分文本文件
【发布时间】:2020-02-07 18:46:52
【问题描述】:

我正在运行 Ubuntu 18.04 LTS。我有一个名为“group_keys”的文本文件,其中包含一些我想根据分隔符拆分的公钥

-----BEGIN PUBLIC KEY-----

然后分别依次输出每个键。例如,如果有三个键,则输出将是三个文件,名称分别为“person_1_key”、“person_2_key”和“person_3_key”。

文件如下所示:

我在使用 splitcsplit 执行此操作时遇到了困难。我输入的命令不起作用。这是我尝试过的;

使用拆分:

split --separator="-----BEGIN PUBLIC KEY-----" group_keys

这不会输出任何东西,而是给我消息

split: multi-character separator ‘-----BEGIN PUBLIC KEY-----’

使用 csplit:

csplit group_keys "-----BEGIN PUBLIC KEY-----"

这只会给我两个文件,“xx00”和“xx01”,但它不会拆分行。 “xx00”是完全空白,“xx01”只是原始文件。

【问题讨论】:

    标签: bash ubuntu split


    【解决方案1】:

    试试

    csplit -z -f person_ -b '%d_key' group_keys '/-----BEGIN PUBLIC KEY-----/' '{*}'
    

    这将输出四个文件person_0_keyperson_1_keyperson_2_keyperson_3_key where

    • -z 禁止生成空文件
    • -f person_ 设置输出文件名前缀
    • -b '%d_key' 设置输出文件名后缀
    • '{*}' 设置重复次数(尽可能多地重复)

    【讨论】:

      【解决方案2】:

      这应该可行:

      awk '/-----BEGIN PUBLIC KEY-----?/{n++}{print > "person_" n "_key" }' group_keys

      【讨论】:

      • 是的,确实有效!非常感谢你。但是,您能解释一下使用的一些语法吗?特别是括在大括号中的文本。我对AWK不熟悉。那些是正则表达式吗?
      猜你喜欢
      • 2010-10-03
      • 2019-07-14
      • 1970-01-01
      • 2012-07-04
      • 2021-12-29
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2019-09-19
      相关资源
      最近更新 更多