awk 或sed的问题,字符串替换
文件中字段大体如下
<KPI_ID="3221212" KPI_NAME="GPRS附着请求次数" DB_FIELD="AttGprsAttach" TYPE="number"/>
<KPI KPI_ID="3221312" KPI_NAME="GPRS附着拒绝次数" DB_FIELD="FailedGprsAttach" TYPE="number"/>
<KPI KPI_ID="3221412" KPI_NAME="GPRS附着成功率" DB_FIELD="RateSuccGprsAttach" TYPE="number"/>
我想达到的效果是,把其中包含“……次数”的行中的DB_FIELD="???"字段全部改为DB_FIELD="trunc(???)",其他不包含“……次数”的行不修改
------解决方案--------------------sed -i "/GPRS.*次数/{s/DB_FIELD=\"\(.*\)\" /DB_FILED=\"trunc(\1)\" /}" filename
------解决方案--------------------
------解决方案--------------------http://blog.csdn.net/zg_hover/archive/2007/09/28/1804481.aspx
------解决方案--------------------sed -i "s/DB_FIELD=\"\(.*\)\" TYPE/DB_FIELD=\"trunc(\1)\" TYPE/g" filename
s/字符串1/字符串2/g 在全文搜索,将字符串1替换成字符串2
\(.*\) 向后引用,在字符串2中可调用\1引用
\"为转义字符"
根据情况 DB_FIELD="AttGprsAttach" TYPE
字符串1为DB_FIELD=\"\(.*\)\" TYPE
字符串2为DB_FIELD=\"trunc(\1) TYPE
sed -i "/GPRS.*次数/{s/DB_FIELD=\"\(.*\)\" TYPE/DB_FIELD=\"trunc(\1)\" TYPE/g}" filename