如何删除文件中的特定数字?

如何删除文件中的特定数字?

我有一个文件:

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:]。不幸的是,它不应该以这种方式工作。

我相信sedperl 可以完成这项工作,但我不知道具体是如何完成的。

我在谷歌上搜索,如果你相信我,结果是混合且相关的,但我无法在第一页找到正确的结果。

答案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//正在删除一系列至少一个空格,后跟字符0,然后是词尾。

或者,在文件中就地替换,

sed -ibbak -e 's/\s\+0\b//g' <filename>
  • -i到位
  • -b.bak进行备份(扩展名是.bac
  • 这里的正则表达式+字符必须被转义。
  • \s正则表达式中是一个空格
  • \b正则表达式中是词尾

希望它能够启动!

相关内容