2013-03-03 44 views
0

如何删除文件中不等于0的字符之前的所有空格?如何删除文件中的0?

例如

000545 - delete 000 
0184 - delete 0 
000000547 - delete 000000 
005000 - delete 00 

谢谢;)

回答

1

您可以使用sed

sed -e 's/^00*//' file.txt 

此圣雷莫在行的开始处有所有0个字符。

+0

一个问题可能是这会删除第一个数字,如果它恰好等于0 – Scrutinizer 2013-03-03 23:31:50

3

一个sed方式:

$ echo '000545 
> 0184 
> 000000547 
> 005000 
> ' | sed 's/^0*//' 
545 
184 
547 
5000 
+0

一个问题可能是这会删除第一个数字,如果它恰好等于0 – Scrutinizer 2013-03-03 23:32:22

1

不知道这将是任何慢一些,但是去作为一个解决方案,反正:

awk '{printf "%d\n", $1}' 

或明确:

awk '{print int($1)}' 
1

这是另一种变体,有点更广义的和应该工作对于OP的情况也是如此。

这将删除所有前导零,但如果行包含要么只是一个0或只是一组零的,将确保只有一个零被保留,而不是把它空白(其中其他答案一样)。如果这种行为不是有意的,而只是想将所有只包含零的行清空,请不要使用此解决方案。

sed 's#^0\+\([^0]\+.*$\|0$\)#\1#' file 

示例文件:

000545 
0184 
000000547 
005000 
000a 
00000 
0 
0045b 
067800abc 

输出:

545 
184 
547 
5000 
a 
0 
0 
45b 
67800abc 
+0

[UUCA](http:///partmaps.org/era/unix/award.html) - 不需要'猫' – Rubens 2013-03-03 21:55:55

+0

是的,你说得对,我可以使用sed的'-e'选项:)更新了帖子。 – Tuxdude 2013-03-03 21:57:48

+1

您可以使用'sed's/.../... /''';使用GNU sed 4.2.1版对我来说非常好。 '-e'通常应用于具有多个表达式的案例。 – Rubens 2013-03-03 21:59:22

1

我最近偶然的Perl此神秘位:perl -pe 's/\G0//g'