我有一个管道分隔文件,我想删除字段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 :(得分:1)
gsub
的模式参数是正则表达式而不是glob。您的 * 与您的预期不符。你想要/.*,/
。您还需要OFS
到 | 来保留该分隔符。
mv $1 $1.bak4
awk 'BEGIN{ FS = OFS = "|" }{ gsub(/.*,/,"",$9) } 1' $1.bak4 > $1
我还使用真实模式(1
)替换了您使用的详细打印行,该模式使用默认操作是打印的事实。