ファイル内の 0 以外の文字の前にあるすべてのスペースを削除するにはどうすればよいですか?
例
000545 - delete 000
0184 - delete 0
000000547 - delete 000000
005000 - delete 00
ありがとうございました ;)
ファイル内の 0 以外の文字の前にあるすべてのスペースを削除するにはどうすればよいですか?
例
000545 - delete 000
0184 - delete 0
000000547 - delete 000000
005000 - delete 00
ありがとうございました ;)
sed
方法:
$ echo '000545
> 0184
> 000000547
> 005000
> ' | sed 's/^0*//'
545
184
547
5000
遅くなるかどうかはわかりませんが、解決策としては、とにかく:
awk '{printf "%d\n", $1}'
または明示的に:
awk '{print int($1)}'
これは別のバリアントであり、もう少し一般化されており、OP の場合にも機能するはずです。
これにより、先頭のゼロがすべて削除されますが、行に0
ゼロまたはゼロのセットのみが含まれている場合は、空白にするのではなく、正確に 1 つのゼロが保持されるようになります (他の回答ではそうでした)。この動作が意図されておらず、ゼロだけを含むすべての行を空白にしたいだけの場合は、この解決策を使用しないでください。
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
私は最近、Perl の難解なビットに出くわしました:perl -pe 's/\G0//g'
別の awk:
awk '{$1+=0}1' file