2016-01-01 227 views
1

我有很多这样的行:如何将字符串分割成两行有两个字符的分隔符

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

我需要这样的:

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

我两个想过分割线线使用分隔符 “>。”: “>”

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

然后取出数1 A和最后合并A B

的问题是我能得到一个使用awk:

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

可是如何才能让B'有什么办法可以从第一个分隔符“。>”分割到字符串的末尾吗?

我试过使用剪切命令,但剪切只允许一个字符分隔符。

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

+0

为了有一个分隔符当成“点大于”而不是“任何 - 字符大于“,则必须使用-F'\\。>'或'-F”\\\\>“' - 您必须将适当数量的转义传递给awk。 –

+0

@Gea - 这是一个非常奇怪的方法,而不仅仅是'sed's/1 //''或类似的方法。 –

回答

3

什么:

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

? :)

+0

你可能想指定'-v OFS =“。>”' –

0

如果我理解正确,这听起来像你想要的是用.>替换第一个匹配的行1.>?如果是这样,那么你可以这样写:以这种方式

sed 's/1[.]>/.>/' 
2
awk '/(.*?).> (.*)/ { a= $1;$1="";b=$0;print a,b}' 

你在单行兼得ab