【问题标题】:Create newlines at the first of multiple similar variables or end of set在多个相似变量的第一个或集合末尾创建换行符
【发布时间】:2019-05-21 01:14:08
【问题描述】:

我似乎无法获得一个不会在所有 domain: 出现之间或仅在 domain:dataamount: 之间放置换行符的正则表达式

感谢this askubuntu 上的有用帖子,我已尝试将该部分的换行符压缩为逗号,以便我可以处理生成的字段,但似乎没有结果。

| grep -e ' domain:' -e 'total' | tr '\n' , | sed 's/,dataamount:/,\ndataamount:/g' | tr , '\n'

它只会在最后一个 domain:dataamount: 之间添加一个换行符,如果我想在 dataamount: [0-9].*\'? 之后添加一个换行符

    domain: domain1.com
    domain: domain2.info
    domain: domain3.com
dataamount: 9210470
    domain: domain4.com
    domain: domain5.com
    domain: domain6.com
dataamount: '25325235235'
    domain: domain7.com
    domain: domain8.com
dataamount: 12321

我想让这些数据集的开头有换行符。

    domain: domain1.com
    domain: domain2.info
    domain: domain3.com
dataamount: 9210470

    domain: domain4.com
    domain: domain5.com
    domain: domain6.com
dataamount: '25325235235'

    domain: domain7.com
    domain: domain8.com
dataamount: 12321

它们都以domain: 开头,似乎所有列出这些问题的 awk/sed 解决方案的地方都没有考虑数字和单引号中的数字被拆分为换行符并保留数字并且只会匹配起始 @ 987654332@ 直到一组之后,所以很难找到任何符合我的问题的东西。

【问题讨论】:

    标签: bash command-line text-formatting


    【解决方案1】:

    啊,你想在dataamount 之后添加换行符。您需要 group 整个 dataamount 行并附加一个换行符。它可以通过 sed 使用 s/^(dataamount.*)/\1\n/g 来完成。

    由于^,正则表达式^(dataamount.*) 搜索以dataamount 开头的行。因为我们使用(),所以我们将它分组,它可以在替换部分中用作\1。这个\1 称为反向引用,它是扩展正则表达式的一部分。在引用之后,即整行,我们添加一个换行符\n

    $ sed -r 's/^(dataamount.*)/\1\n/g' file.txt 
        domain: domain1.com
        domain: domain2.info
        domain: domain3.com
    dataamount: 9210470
    
        domain: domain4.com
        domain: domain5.com
        domain: domain6.com
    dataamount: '25325235235'
    
        domain: domain7.com
        domain: domain8.com
    dataamount: 12321
    
    

    你可以从我之前的推动中得到这个:

    perl -pe 's#^\s+domain: (.*)\n$#\1, #;s#(dataamount.*)$#\n\1#' file.txt
    

    后一个正则表达式 s#(dataamount.*)$#\n\1# 就是这样做的 ;-)

    【讨论】:

    • 你说得对,我不清楚我想要什么。我在上面添加了清晰度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2022-08-12
    • 2015-10-18
    • 2011-03-26
    • 2012-03-02
    相关资源
    最近更新 更多