2017-05-02 46 views
0

我有这个文件:如何在特定字符后跟数字后删除字符串中的所有内容?

Cavr.NG178.1  Cavr.NG12780.1_at  APTG386_at-255 
Cavr.NG056.1  Cavr.NG02560.1_at  APTG560_at-895 
Cavr.NG714.1  Cavr.NG77140.1_at  APTG680_s_at-2732 

我想删除一切后,最后一栏的“AT-”,例如:

Cavr.NG178.1  Cavr.NG12780.1_at  APTG386_at 
Cavr.NG056.1  Cavr.NG02560.1_at  APTG560_at 
Cavr.NG714.1  Cavr.NG77140.1_at  APTG680_s_at 

但是,我想也影响了代码第二列,例如:

sed 's/at-*//' 

有什么建议吗?

回答

1

随着GNU sed的:

sed -E 's/(.*at).*/\1/' file 

输出:

 
Cavr.NG178.1  Cavr.NG12780.1_at  APTG386_at 
Cavr.NG056.1  Cavr.NG02560.1_at  APTG560_at 
Cavr.NG714.1  Cavr.NG77140.1_at  APTG680_s_at 
2

sed的方法:

sed 's/_at[^[:space:]]*$/_at/' file 

输出:

Cavr.NG178.1  Cavr.NG12780.1_at  APTG386_at 
Cavr.NG056.1  Cavr.NG02560.1_at  APTG560_at 
Cavr.NG714.1  Cavr.NG77140.1_at  APTG680_s_at 
0
$ sed 's/-[^-]*$//' file 
Cavr.NG178.1  Cavr.NG12780.1_at  APTG386_at 
Cavr.NG056.1  Cavr.NG02560.1_at  APTG560_at 
Cavr.NG714.1  Cavr.NG77140.1_at  APTG680_s_at 

或:

$ cut -d- -f1 file 
Cavr.NG178.1  Cavr.NG12780.1_at  APTG386_at 
Cavr.NG056.1  Cavr.NG02560.1_at  APTG560_at 
Cavr.NG714.1  Cavr.NG77140.1_at  APTG680_s_at 
相关问题