Chinaunix
标题:
用awk和sed实现模糊匹配替换
[打印本页]
作者:
wbbshen
时间:
2012-11-27 11:37
标题:
用awk和sed实现模糊匹配替换
0|3|0|1|1|13915981874|520|25|8613915981|20||||46001391598187|20121127095746|20121127095778|0|0||1||||025|25|0000|0000|||||11110||||||0||||||||||||520|1111000000|
处理后:
0|3|0|1|1|13915981874|520|25|8613915981|20||||46001391598187|||0|0||1||||025|25|0000|0000|||||11110||||||0||||||||||||520|1111000000|
要求:将其中匹配2012的字符串:20121127095746和20121127095778替换为空 (这两个除了2012为常量,其它均为变化的数值)
awk -F '|' '{gsub(/……2012/,"")}{print}' abc.txt
这个只能将2012规格掉,不符合要求,请问有什么办法么?
作者:
rdcwayx
时间:
2012-11-27 11:43
本帖最后由 rdcwayx 于 2012-11-27 13:44 编辑
awk '{for (i=1;i<=NF;i++) if ($i~/2012/) $i=""}1' FS=\| OFS=\| infile
复制代码
作者:
代号:军刀
时间:
2012-11-27 12:20
sed 's/2012[0-9]\{10\}//g' urfile
复制代码
作者:
wbbshen
时间:
2012-11-27 13:00
~/2012/:~是不是可以理解为模糊匹配
2012[0-9]\{10\}:10应该是位数
多谢楼上两位.
作者:
yestreenstars
时间:
2012-11-27 13:51
sed 's/[^|]*2012[^|]*//g' file
复制代码
作者:
kernel69
时间:
2012-11-27 15:36
perl -F'\|' -lane 'print if s/$F[14]// && s/$F[15]//'
复制代码
作者:
vic260844
时间:
2012-11-27 16:13
来一个复杂一点,大材小用的awk
awk -F"|" 'BEGIN{OFS="|"}{for (i=1;i<=NF;i++) { if ($i ~ /2012........./) $i=""}print}' file
复制代码
作者:
wbbshen
时间:
2012-11-27 17:49
这个.....好象很有意思嘛
回复
7#
vic260844
作者:
wbbshen
时间:
2012-11-27 17:49
没有用过perf,也谢了
回复
6#
kernel69
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2