我正在使用的文件如下所示(仅显示最后两行):
[16]((((((((((648:0.0167313,(((839:0.00281972,903:
[62](((909:0.00419522,895:0.00419522):0.004454hgip: 76898
在bash中,我如何检查最后一行是否包含字符串hgip
- 如果是,请将[]后面的最后一行替换为上面那行(倒数第二行)的表达式,如这样:
[16]((((((((((648:0.0167313,(((839:0.00281972,903:
[62]((((((((((648:0.0167313,(((839:0.00281972,903:
因此,应该从原始数字保留该数字,但从倒数第二行复制该行的其余部分。该行开头的数字并不总是两个字符长,但可以是任何长度。在括号之后总是有一个(
.....
答案 0 :(得分:2)
像:
sed -n '/hgip/{s/].*/]/;G;s/\n//g};p;{s/\[[0-9]*\]//;x}'
答案 1 :(得分:0)
sed的美丽
sed '$!h; ${/hgip/{x; s/.*\]//; x; s/\(^.*\]\).*/\1/; G; s/\n// }}' file