ファイルから特定の番号を削除する方法は?

ファイルから特定の番号を削除する方法は?

ファイルがあります:

1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0

すべてのゼロを削除したいと思います。

1 2 5 6 8 
1 2 5 6 8 
1 2 5 6 8 
1 2 5 6 8

私は努力したtr -d [:0:]。残念ながら、このように動作しないでください。

私はPerlがそれを行うことができると信じていますがsed、正確にどうするかわかりません。

Google で検索しましたが、私の言葉を信じていたら、結果が混在して関連性がありましたが、最初のページで正しい結果が見つかりませんでした。

答え1

[8]root@lab711:> cat file
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
[8]root@lab711:> sed 's/0//g' file
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8

答え2

trこの仕事に適しています:

tr -d 0 <file

[:0:]使用する必要があるため無効です。キャラクタークラス[::]

答え3

ファイルからゼロをすべて削除するために使用するコマンドは代替のsed 's/0//g' filename意味ですs/0ファイルのすべての0を表します。何も置き換えません//g世界を代表する

答え4

努力する

perl -pe 's/\s+0\b//g' <filename>
  • -pファイル行を繰り返し印刷します。$_
  • -e実装する
  • /gグローバル(発生するすべて)
  • 正規表現は、s/\s+0\b//少なくとも1つのスペース、文字0、単語の終わりの順序を削除します。

またはファイルの場所を置き換えるには

sed -ibbak -e 's/\s\+0\b//g' <filename>
  • -i所定の位置に
  • -b.bakバックアップの作成(拡張子は.bac
  • ここで正規表現+文字はエスケープする必要があります。
  • \s正規表現にスペースがあります
  • \b正規表現では、サフィックスという単語は次のとおりです。

リリースされることを願っています!

関連情報