2014-05-23 49 views
1

我有一個管道分隔的文件,我想一個逗號之前刪除所有文本場9刪除逗號之前的文本以分隔場

示例行:

www.upstate.edu|upadhyap|Prashant K Upadhyaya, MD||General Surgery|http://www.upstate.edu/hospital/providers/doctors/?docID=upadhyap|Patricia J. Numann Center for Breast, Endocrine & Plastic Surgery|Upstate Specialty Services at Harrison Center|Suite D, 550 Harrison Street||Syracuse|NY|13202| 

所以有針對性的場:|Suite D, 550 Harrison Street|

,我希望它看起來像:|550 Harrison Street|

到目前爲止,我已經試過了無論是從其他領域的信息刪除(通常是字段3中的名稱)或者沒有效果。

的.awk腳本我一直在嘗試寫看起來像這樣:

mv $1 $1.bak4 
cat $1.bak4 | awk -F "|" '{ 
    gsub(/*,/,"", $9); 
    print $0 
}' > $1 
+0

現在還不清楚環境是什麼。這是一個shell腳本嗎? 'bash'或'sh'? – chrylis

回答

1

模式參數gsub是一個正則表達式不是水珠。您的*與您所期望的不符。那裏你想要/.*,/。你也需要OFS|保留該分隔符。

mv $1 $1.bak4 
awk 'BEGIN{ FS = OFS = "|" }{ gsub(/.*,/,"",$9) } 1' $1.bak4 > $1 

我也換成你有與使用的事實,默認操作是打印一個真正的模式(1)冗長的打印線。

+0

或者它可以像這樣'awk'BEGIN {FS = OFS =「|」 } {sub(/.*,* /,「」,$ 9)} 1''如果你想刪除前導空格。 –