- 论坛徽章:
- 2
|
本帖最后由 damcool 于 2013-11-15 21:33 编辑
问题一,可处理多S:- awk '{s=$6;gsub(/[0-9]+D|[0-9]+I|[0-9]+M|S$/,"",s);m=$6;gsub(/[0-9]+S|[0-9]+D/,"",m);n=split(m,a,"[MI]");t=0;if (match(m,"I")) for (i=1;i<=n;i++) t+=a[i];n=split(s,a,"S");for (i=1;i<=n;i++) if (length(substr($10,t,a[i]))>1&& length(substr($11,t,a[i]))>1) printf "%s_%d\n%s\n%s\n%s\n\n",$1,($9>0?1:2),substr($10,t,a[i]),"+",substr($11,t,a[i])}' data
复制代码 问题二,可指定字符串长度(通过strlen指定):- awk -v strlen=10 '{m=$6;gsub(/D/,"I",m);gsub(/[0-9]+S/,"",m);n=split(m,a,"[MI]");t=0;if (match(m,"I")) for (i=1;i<=n;i++) t+=a[i];if (t>strlen) printf "%s_%d\t%s\t%d\n\n",$1,($9>0?1:2),$6,$4+t}' data
复制代码 |
|