0

ファイル内の 0 以外の文字の前にあるすべてのスペースを削除するにはどうすればよいですか?

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

ありがとうございました ;)

4

6 に答える 6

3

sed方法:

$ echo '000545
> 0184
> 000000547
> 005000
> ' | sed 's/^0*//'
545
184
547
5000
于 2013-03-03T21:35:33.660 に答える
1

遅くなるかどうかはわかりませんが、解決策としては、とにかく:

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

または明示的に:

awk '{print int($1)}'
于 2013-03-03T21:54:02.990 に答える
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
于 2013-03-03T21:54:28.343 に答える
1

私は最近、Perl の難解なビットに出くわしました:perl -pe 's/\G0//g'

于 2013-03-04T01:52:08.350 に答える
1

使用できますsed

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

0これにより、行頭のすべての文字が削除されます。

于 2013-03-03T21:35:54.507 に答える
0

別の awk:

awk '{$1+=0}1' file
于 2013-03-03T23:43:14.380 に答える