Bash 如何删除文件中的0?

Bash 如何删除文件中的0?,bash,Bash,如何删除文件中不等于0的字符前的所有空格 范例 000545 - delete 000 0184 - delete 0 000000547 - delete 000000 005000 - delete 00 谢谢;) Ased方式: $ echo '000545 > 0184 > 000000547 > 005000 > ' | sed 's/^0*//' 545 184 547 5000 你可以用 这将删除行首的所有0字符。不确定是否会更慢,但无论如何,这是一个

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

范例

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

谢谢;)

A
sed
方式:

$ echo '000545
> 0184
> 000000547
> 005000
> ' | sed 's/^0*//'
545
184
547
5000
你可以用


这将删除行首的所有
0
字符。

不确定是否会更慢,但无论如何,这是一个解决方案:

awk '{printf "%d\n", $1}'
或者明确地说:

awk '{print int($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
另一个awk:

awk '{$1+=0}1' file

我最近偶然发现了这个神秘的Perl:
Perl-pe's/\G0//g'

是的,你说得对,我可以使用sed:)的
-e
选项更新帖子。你可以使用
sed's/../../…'
;使用GNU sed版本4.2.1对我来说效果非常好。
-e
通常用于具有多个表达式的情况。请再次单击鼠标右键。不知道:)一个捕获可能是,如果恰好等于0,则删除第一个数字。一个捕获可能是,如果恰好等于0,则删除第一个数字
awk '{$1+=0}1' file