Chinaunix
标题:
替换文件内容,求帮忙
[打印本页]
作者:
gxxiaotian
时间:
2014-05-08 15:54
标题:
替换文件内容,求帮忙
文件内容大概如下:
char szSecuAcc[12];
char T354_szSecuAcc_WO[11];
stSecuAcc
secuacc
现在想要的是,包含SecuAcc的行(此字符串不区分大小写),并且此行有[]符号的行,将[]中的数字替换成22
作者:
jason680
时间:
2014-05-08 16:06
回复
1#
gxxiaotian
How about this ...
$ sed -r 's/(
SecuAcc
[^[]*)\[[0-9]+\]/\1[22]/
i
g' FILE
char szSecuAcc[22];
char T354_szSecuAcc_WO[22];
stSecuAcc
secuacc
作者:
gxxiaotian
时间:
2014-05-08 16:07
可以用awk写个么,谢谢了
回复
2#
jason680
作者:
Herowinter
时间:
2014-05-08 16:11
回复
1#
gxxiaotian
sed -r '/[Ss][Ee][Cc][Uu][Aa][Cc]{2}/s/\[.*\]/[22]/' i
char szSecuAcc[22];
char T354_szSecuAcc_WO[22];
stSecuAcc
secuacc
复制代码
作者:
Herowinter
时间:
2014-05-08 16:16
回复
3#
gxxiaotian
awk 'BEGIN{IGNORECASE=1} /SecuAcc/{sub(/\[.*\]/,"[22]");print}' i
char szSecuAcc[22];
char T354_szSecuAcc_WO[22];
stSecuAcc
secuacc
复制代码
作者:
gxxiaotian
时间:
2014-05-08 16:17
非常感谢
回复
5#
Herowinter
作者:
jeffreyst
时间:
2014-05-08 16:18
sed -r '/[Ss][Ee][Cc][Uu][Aa][Cc][Cc]/s/(.*\[)[0-9]+(\].*)/\122\2/' file
char szSecuAcc[22];
char T354_szSecuAcc_WO[22];
stSecuAcc
secuacc
这样[Ss][Ee][Cc][Uu][Aa][Cc][Cc]匹配不区分大小写的字串,不太好看
有更先进的办法吗?哪位大神帮忙解答下...
作者:
jeffreyst
时间:
2014-05-08 16:18
本帖最后由 jeffreyst 于 2014-05-08 16:25 编辑
回复
2#
jason680
更正下,这个语句可以实现匹配忽略大小写的字串,但是不太明白原理,研究中!
作者:
jason680
时间:
2014-05-08 16:18
回复
3#
gxxiaotian
Here you are
$ awk -vIGNORECASE=1 '{$0=gensub(/(SecuAcc[^\[]*)\[[0-9]+\]/, "\\1[22]","g")}1' FILE
char szSecuAcc[22];
char T354_szSecuAcc_WO[22];
stSecuAcc
secuacc
作者:
Herowinter
时间:
2014-05-08 16:18
回复
7#
jeffreyst
我也不会别的方法呀,坑爹的忽略大小写。
作者:
jason680
时间:
2014-05-08 16:19
回复
8#
jeffreyst
How to know ?
作者:
jeffreyst
时间:
2014-05-08 16:23
回复
11#
jason680
sorry!你的语句是可以的,但是没看太懂,给大伙儿解释下原理,多谢了~
作者:
jason680
时间:
2014-05-08 16:25
回复
12#
jeffreyst
s/old/new/
i
g
i for ignorecase
g for global
作者:
jeffreyst
时间:
2014-05-08 16:31
本帖最后由 jeffreyst 于 2014-05-08 16:36 编辑
回复
13#
jason680
我把i理解成insert了,
所以咋看都不对头...多谢提点!
我这个半吊子,再不好好学习就不行了
cat 1
char szsecuAcc[12];
char T354_szSEcuAcc_WO[11];
stSecuAcC
secuaCc
[root@]#
[root@]# cat 1 |sed 's/secuAcc/xxx/i'
char szxxx[12];
char T354_szxxx_WO[11];
stxxx
xxx
复制代码
作者:
yestreenstars
时间:
2014-05-08 23:49
perl -pe 's/\[[^]]+\]/[22]/g if /SecuAcc/i'
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2