在分隔字段中删除逗号之前的文本

时间:2014-05-23 21:38:44

标签: awk pipe delimiter comma

我有一个管道分隔文件,我想删除字段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

1 个答案:

答案 0 :(得分:1)

gsub的模式参数是正则表达式而不是glob。您的 * 与您的预期不符。你想要/.*,/。您还需要OFS | 来保留该分隔符。

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

我还使用真实模式(1)替换了您使用的详细打印行,该模式使用默认操作是打印的事实。