2017-01-02 6 views
-1

У меня есть ниже файла:с использованием СЭД заменить строку в солярисе

. TAU 4236-DA 20 
4236-DA - SMS 
4236-DA - EMAIL 
MID=4236,SC= 
{AnyText} 
,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
» 
« 
. TAU 3065-DA 20 
3065-DA - SMS 
3065-DA - EMAIL 
MID=7364,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
,USEDVAL= 
{AnyText} 
,EXCESS= 
{AnyText} 
» 

я хочу ниже выхода:

. TAU 4236 20 
4236-DA - SMS 
4236-DA - EMAIL 
MID=4236,SC= 
{AnyText} 
,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
» 
« 
. TAU 3065 20 
3065-DA - SMS 
3065-DA - EMAIL 
MID=7364,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
,USEDVAL= 
{AnyText} 
,EXCESS= 
{AnyText} 
» 

[Я хочу, чтобы удалить -DA из. TAU]. Помощь Plz. Также обратите внимание, что в файле вместо «-DA» есть несколько строк в файле, которые я хочу удалить. как «-д», «-la», «-т»

+0

Пожалуйста, добавьте Solaris версии на ваш вопрос. – Cyrus

+0

Предоставьте отзыв о предоставленных ответах и ​​_accept_ решении, которое помогло вам решить проблему. – Inian

+0

Ребята, спасибо, но моя проблема на самом деле до сих пор не решена. эта строка «-DA» на самом деле не является постоянной в файле. в некоторых местах это «-DA», а в некоторых он похож на «-MA», «-EU», «-пороговый». я попытался использовать «cat sms-pattern-triggers.ptc-jawad | sed -r»/(TAU \ s + [0-9] {4}) - [Az] [Az]/\ 1/g '", но он также не удаляет все Alhphabets после тире (-) – user7352907

ответ

1

Вы можете использовать группировку, чтобы соответствовать TAU XXXX так:

sed -r 's/(TAU\s+[0-9]{4})-DA/\1 /g' data.txt 

Это заменит -DA с 3 места, когда -DA является предшествующим группой (TAU\s+[0-9]{4})

или awk:

awk '{ print gensub(/(TAU\s+[0-9]{4})-DA/,"\\1 ","g",$0); }' data.txt 
+1

Хорошие предложения, но, как упоминалось в OP, я не думаю, что 'Solaris' поддерживает флаг' -r' для 'sed', а скорее только опционы POSIX. – Inian

+0

команда sed, о которой вы говорили выше, работает, но я попытался заменить DA в вышеуказанной команде на [A-z], чтобы включить все алфавиты после тире (-), но он не работает. можете ли вы предложить? – user7352907

+0

попробуйте использовать '[a-Z] +' вместо DA: '/ (TAU \ s + [0-9] {4}) - [a-Z] + /' –