2017-01-02 71 views
-1

字符串我有以下文件:使用sed的替換在solaris

. 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」。像 「-DA」, 「-LA」, 「-MA」

+0

請的Solaris版本添加到您的問題。 – Cyrus

+0

提供有關所提供答案的反饋和_accept_幫助您解決問題的解決方案。 – Inian

+0

傢伙非常感謝,但我其實我的問題仍然沒有解決。這個「-DA」字符串在文件中實際上並不是常量。有些地方是「-DA」,有些則是「-MA」,「-EU」,「 - threshold」。我嘗試使用「cat sms-pattern-triggers.ptc-jawad | sed -r's /(TAU \ s + [0-9] {4}) - [Az] [Az]/\ 1/g'」,但它( - ) – 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'支持'sed'的'-r'標誌,而只支持'POSIX'選項。 – Inian

+0

上面提到的sed命令正在工作,但我試圖用[A-z]替換上述命令中的DA以在短劃線( - )之後包含所有字母,但它不起作用。你能建議嗎? – user7352907

+0

嘗試用'[a-Z] +'代替DA:'/(TAU \ s + [0-9] {4}) - [a-Z] + /' –