2016-01-01 4 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 B

Проблема в том, что я могу получить с AWK:

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

Но как получить B? Есть ли способ разделить на конец строки из первого разделителя ".>"?

Я попытался использовать команду cut, но разрезал только один разделитель символов.

PD. «Любое слово» этой строки может иметь. поэтому мне нужен два разделителя символов.

+0

Для того, что разделитель рассматривается как «точка больше, чем» вместо «any- символ больше, чем ", вы должны' -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}' 

в этом случае у вас есть как a и b в одной строке

Смежные вопросы