在下面的tab-delimited
文件中,我试图删除$1
中最后一位数字之后的文本。我已经尝试了两个sed
命令,但已接近但未达到所需的输出。我不知道我是否正在使用最佳方法。谢谢:)。
文件
chr7:55249071C>T EGFR
chr7:55242469_55242477delTTAAGAGAAG EGFR
所需的输出
chr7:55249071 EGFR
chr7:55242469_55242477 EGFR
固定
sed 's/[0-9]//g' file
chr:C>T EGFR
chr:_delTTAAGAGAAG EGFR
sed 's/[a-z]//g' file
7:55249071C>T EGFR
7:55242469_55242477TTAAGAGAAG EGFR
答案 0 :(得分:2)
您可以使用否定字符类和锚点仅在字符串末尾删除
$ awk 'BEGIN{FS=OFS="\t"} {sub(/[^0-9]+$/, "", $1)} 1' ip.txt
chr7:55249071 EGFR
chr7:55242469_55242477 EGFR
BEGIN{FS=OFS="\t"}
将输入和输出字段定界符设置为制表符sub(/[^0-9]+$/, "", $1)
仅对第一个字段执行替换,与sed
1
的惯用方式来打印$0
的内容答案 1 :(得分:1)
如果可以确保您的输入只有两个制表符分隔的字段,则可以使用以下方法:
sed 's/[^0-9]\+\t/\t/' file
答案 2 :(得分:1)
这可能对您有用(GNU sed):
void printArray(Queue &myQueue){
for (int i = 0; i < myQueue.list.size(); i++){
cout << myQueue.list.at(i) << ", ";
}
cout << endl;
}
匹配最后一个数字并存储为后备引用,并删除其后的所有非空格字符。