Perl 如何删除一行中的尾随字符

Perl 如何删除一行中的尾随字符,perl,sed,Perl,Sed,我有一个包含模式的文件,如图所示: a0 b00 c000 d0000000 e00 f00 如何编写perl oneliner或sed命令以获得以下输出: a b c d e f 我的审判: sed -i 's/0*$//g' filename.txt 试试这个: sed -r 's/(.).*/\1/' File 仅打印每行的第一个字符。这是与perl等效的字符(就地替换): 如果你好奇的话,awk: awk 'BEGIN{FS=""}{print $1}' file 您的行中很可

我有一个包含模式的文件,如图所示:

a0
b00
c000
d0000000
e00
f00
如何编写perl oneliner或sed命令以获得以下输出:

a
b
c
d
e
f
我的审判:

sed -i 's/0*$//g' filename.txt
试试这个:

sed -r 's/(.).*/\1/' File

仅打印每行的第一个字符。

这是与
perl
等效的字符(就地替换):

如果你好奇的话,
awk

awk 'BEGIN{FS=""}{print $1}' file

您的行中很可能有尾随空格,请尝试使用此sed oneliner:

sed 's/0*\s*$//' file
请注意,
g
标志不是必需的。

使用perl的一种方法:

perl -F"" -alne 'print $F[0]' file

我对你的命令没有任何异议。如果你的命令失败了,我猜问题出在别处。您的文件是否包含DOS行尾?查看使用
dos2unix
转换是否有帮助。
abc000
的结果必须是什么?在最多只能匹配一次的匹配中,可能不需要全局标志
g
perl -F"" -alne 'print $F[0]' file