4

我有这样的文件:

pup@pup:~/perl_test$ cat numbers 
1234567891
2133123131
4324234243
4356257472
3465645768000
3424242423
3543676586
3564578765
6585645646000
0001212122
1212121122
0003232322

在上面的文件中,我想删除前导零和尾随零,因此输出将是这样的

pup@pup:~/perl_test$ cat numbers 
1234567891
2133123131
4324234243
4356257472
3465645768
3424242423
3543676586
3564578765
6585645646
1212122
1212121122
3232322

如何做到这一点?我试图sed删除那些零。删除尾随零很容易,但前导零却没有。

帮我。

4

5 回答 5

7
perl -pe 's/^0+ | 0+$//xg' numbers
于 2013-09-10T09:20:55.023 回答
6

sed在行首寻找全零 + 在最后寻找全零:

$ sed -e 's/^[0]*//' -e 's/[0]*$//g' numbers
1234567891
2133123131
4324234243
4356257472
3465645768
3424242423
3543676586
3564578765
6585645646
1212122
1212121122
3232322
于 2013-09-10T09:08:02.623 回答
6

试试这个 Perl:

while (<>) {     
  $_ =~ s/(^0+|0+$)//g;

  print $_;
 }
}
于 2013-09-10T09:09:48.993 回答
3

这可能对您有用(GNU sed):

sed 's/^00*\|00*$//g' file

或者:

 sed -r 's/^0+|0+$//g' file
于 2013-09-10T10:08:30.653 回答
0

删除尾随零的 Bash 示例

    # ----------------- bash 删除尾随零 ------------------
    # 十进制不重要的零可能会被删除
    # bash basic,没有任何新命令,例如。awk, sed, 头, 尾
    # 检查其他主题以删除尾随零
    # 也可以修改为删除前导零

    #unset temp1

    if [ $temp != 0 ] ;# 零余数保持为浮点数
    然后

    对于 {1..6} 中的 i;do # 在两个 for 循环中修改精度

    j=${temp: $((-0-$i)):1} ;# 查找尾随零

    if [ $j != 0 ] ;# 删除尾随零
    然后
        temp1=$temp1"$j"
    菲
        完毕
    别的
        温度1=0
    菲

    temp1=$(回声 $temp1 | rev)
    回声 $result$temp1

    # ----------------- 结束代码 -----------------

于 2019-06-25T16:43:21.930 回答