如何删除文本中的行?

Joh*_*lor 2 command-line text-processing

考虑具有以下形式的 text.txt 文件

25 1 4 5 2 19 38

21 0 8 8 7 7 61

<clus scale = "125"> 1 3 2</clus>

25 3 1.63 123 56 12 38

21 123 12.3 12.1 1.5 2.67 3.77

<clus scale = "227"> 5 6 2</clus>
Run Code Online (Sandbox Code Playgroud)

如何使用终端仅保留数字(和空)行,即将文件转换为

25 1 4 5 2 19 38

21 0 8 8 7 7 61

25 3 1.63 123 56 12 38

21 123 12.3 12.1 1.5 2.67 3.77
Run Code Online (Sandbox Code Playgroud)

pLu*_*umo 6

使用grep

grep '^[0-9. ]*$' text.txt
Run Code Online (Sandbox Code Playgroud)

或者也从匹配中排除空行,​​使用

grep -E '^[0-9. ]+$' text.txt
Run Code Online (Sandbox Code Playgroud)

这将选择带有数字、点和空格的行。
您还可以通过排除行来反转模式,例如<使用grep -v

grep -v "<" text.txt
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您的第二个 `grep` 不会排除只有空格的行,它只会排除没有字符的行。并且您可能希望为负数包含 `-`。 (2认同)