R******d 发帖数: 1436 | 1 有个文本,格式如下:
1 ab123>ac124
2 am501
3 ax230>ay241>az257
目标格式为:
1 ad124
2 am501
3 az257
也就是说第二个colum取最后一个>的字段,如果没有>,则取唯一的那个。
请问用awk怎么完成,谢谢 | j*a 发帖数: 14423 | 2 awk '{print substr($0, length($0)-4)}'
【在 R******d 的大作中提到】 : 有个文本,格式如下: : 1 ab123>ac124 : 2 am501 : 3 ax230>ay241>az257 : 目标格式为: : 1 ad124 : 2 am501 : 3 az257 : 也就是说第二个colum取最后一个>的字段,如果没有>,则取唯一的那个。 : 请问用awk怎么完成,谢谢
| R******d 发帖数: 1436 | 3 多谢。有两个问题:
1,你的这个方法怎么前面的编号123没有出来啊
2,ab124这个长度是不固定的,有时候会是ab12。刚才图简单忘记说了 | R******d 发帖数: 1436 | 4 awk的正则表达式是不是不怎么好用?相比sed的话 | j*a 发帖数: 14423 | 5 gawk '{if (/>/) print $1, substr($0, index($0, ">")); else print $0}'
你想个办法把index换成rindex
【在 R******d 的大作中提到】 : 多谢。有两个问题: : 1,你的这个方法怎么前面的编号123没有出来啊 : 2,ab124这个长度是不固定的,有时候会是ab12。刚才图简单忘记说了
| j*a 发帖数: 14423 | 6 gawk '{if (/>/) print $1, substr($0, match($0, "[^>]*$")); else print $0}' a
【在 j*a 的大作中提到】 : gawk '{if (/>/) print $1, substr($0, index($0, ">")); else print $0}' : 你想个办法把index换成rindex
| j*a 发帖数: 14423 | 7 gawk '{print $1, substr($0, match($0, "[^ >]*$"))}' a
a
【在 j*a 的大作中提到】 : gawk '{if (/>/) print $1, substr($0, match($0, "[^>]*$")); else print $0}' a
| R******d 发帖数: 1436 | |
|