【问题标题】:How to split a string into two lines with a two character delimiter如何使用两个字符分隔符将字符串拆分为两行
【发布时间】:2016-04-06 06:35:54
【问题描述】:

我有很多这样的台词:

<anyword1.> 1. Blablabla .> 2 blablabla .> 3 blablabla

我需要这个:

<anyword.> 1. Blablabla .> 2 blablabla .> 3 blablabla

我想过使用“.>”分隔符将行分成两行:

A="<anyword1"
B=" 1. Blablabla .> 2 blablabla .> 3 blablabla"

然后去掉A中的数字1,最后合并A".>"B

问题是我可以用 awk 得到 A:

awk -F ".>" '{ print $1 }'

但是如何获得 B?有没有办法从第一个分隔符“.>”分割到字符串的末尾?

我尝试使用 cut 命令,但 cut 只允许一个字符分隔符。

PD。 "anyword" 这个字符串可以有 '.'这就是为什么我需要两个字符分隔符。

【问题讨论】:

  • 要将分隔符视为“点大于”而不是“任何字符大于”,您必须 -F '\\.&gt;'-F "\\\\.&gt;" - 您必须传递适当的数字转义到 awk。
  • @Gea - 与 sed 's/1//' 或类似方法相比,这是一种非常奇怪的方法。

标签: regex awk split


【解决方案1】:

怎么样:

awk -F ".>" '{print $1}'
awk -F ".>" '{$1=""; print}'

? :)

【讨论】:

  • 您可能需要指定-v OFS=".&gt;"
【解决方案2】:
awk '/(.*?).> (.*)/ { a= $1;$1="";b=$0;print a,b}'

这样你就可以在一行中同时拥有ab

【讨论】:

    【解决方案3】:

    如果我理解正确,听起来您想要用.&gt; 替换每行上第一次出现的1.&gt;?如果是这样,那么你可以写:

    sed 's/1[.]>/.>/'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      相关资源
      最近更新 更多