从字符串中删除最后一个数字

从字符串中删除最后一个数字

我有一个文件test.txt,内容如下:

SCDE1
SF9
STR1D2
SREDF21
FRED
STER2R4

我只想删除最后一个字符(如果它是数字),因此输出应如下所示:

SCDE
SF
STR1D
SREDF2
FRED
STER2R

答案1

这符合您的标准吗?

输入数据:

cat user324294
SCDE1
SF9
STR1D2
SREDF21
FRED
STER2R4

和转变:

sed 's/[0-9]$//' user324294 
SCDE
SF
STR1D
SREDF2
FRED
STER2R

正则表达式的说明:行尾后面的任何数字都将被替换为空。

答案2

如果最后一个字符是数字,则会删除它。

sed 's|[0-9]$| |g' file

输出:

SCDE
SF
STR1D
SREDF2
FRED
STER2R

答案3

您需要的是一个正则表达式(正则表达式)来匹配您的文本。
匹配的正则表达式号码是[0-9]。该行的末尾是$
两者一起:

 [0-9]$

现在,我们可以使用sed删除每行上的文本:

 sed 's/[0-9]$//' test.txt

如果您需要替换多个数字,请使用重复修饰符,在本例中可能是 *。不是你要问的,但了解很有用:

 sed 's/[0-9]*$//' test.txt

相关内容