2014-05-23 45 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''如果你想删除前导空格。 –