linux - 我想在 linux 上删除多行文本

标签 linux perl awk sed

就像这样。
之前:

1
19:22
abcde

2
19:23

3
19:24
abbff

4
19:25
abbc

之后:

1
19:22
abcde

3
19:24
abbff

4
19:25
abbc

我想删除没有字母表的部分,如第 2 部分。
我认为我应该使用 perl 或 sed。但我不知道该怎么做。 我试过这样。但是没用。

sed 's/[0-9]\n[0-9]\n%s\n//'

最佳答案

sed 用于在单独的行上执行 s/old/new/,仅此而已。对于其他任何你应该使用 awk 的东西:

$ awk -v RS= -v ORS='\n\n' '/[[:alpha:]]/' file
1
19:22
abcde

3
19:24
abbff

4
19:25
abbc

上面就是这样简单的:

  • RS= 告诉 awk 输入记录由空行分隔。
  • ORS='\n\n' 告诉 awk 输出记录也必须用空行分隔。
  • /[[:alpha:]]/ 搜索并打印包含字母字符的记录。

关于linux - 我想在 linux 上删除多行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51359229/

相关文章:

linux - 将文本从 Windows 复制并粘贴到远程 Linux 文件

perl - 使用 perl 连接到数据库

linux - 用于连接两列并在另一个文件中查找连接值的 awk 脚本

bash - 解析 iostat 输出

linux - 在没有符号的情况下调试时如何跳过(不执行!)GDB 中的调用?

linux - 只有 root 可以登录。可能的原因?

json - Perl:如果启动线程,JSON 会失败

linux - awk - 提取唯一出现的字段 1,将字段 2 的多个实例附加到输出中的同一行

linux - 如何在 go 中正确实现挂载命名空间

perl - IO::Select线程中的select()包装器安全吗?如何解决?