首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

awk 或sed的有关问题,字符串替换

2012-03-07 
awk 或sed的问题,字符串替换文件中字段大体如下KPI_ID3221212 KPI_NAMEGPRS附着请求次数 DB_FIELD

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
[解决办法]

探讨

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

热点排行