linux - 使用 sed 删除特定空格的正则表达式

标签 linux bash sed

我有一个如下所示的文本文件:

HETATM11584
HETATM 2514
HETATM22222
HETATM 8585
HETATM 1213
HETATM62626
HETATM 6754

HETATM 与一串数字之间有空格分隔。我想删除这些空格并输出一个如下所示的新文件:

HETATM11584
HETATM2514
HETATM22222
HETATM8585
HETATM1213
HETATM62626
HETATM6754

我尝试使用 sed

sed 's/.*HETATM [1-9]*.*/.*HETATM[1-9]*.*/' HETATM.txt > teste.txt

但是输出看起来是这样的:

HETATM11584
.*HETATM[1-9]*.*
HETATM22222
.*HETATM[1-9]*.*
.*HETATM[1-9]*.*
HETATM62626
.*HETATM[1-9]*.*

此操作的正确 sed 语法是什么?

最佳答案

如果整个文件像您的示例一样,最简单的方法是删除所有空格:

$ sed -r 's/ //g' file.txt
HETATM11584
HETATM2514
HETATM22222
HETATM8585
HETATM1213
HETATM62626
HETATM6754

如果文件由任何后跟空格和以数字结尾的内容组成,则可以这样做:

$ sed -r 's/ +([0-9]+)$/\1/g' file.txt
HETATM11584
HETATM2514
HETATM22222
HETATM8585
HETATM1213
HETATM62626
HETATM6754

关于linux - 使用 sed 删除特定空格的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043247/

相关文章:

linux - 为什么 Linux 内核中的 xtime 变量每 1 毫秒更新一次?

c++ - 如何将常量放入代码内存

linux - 从 CloudFormation::Init 命令重新启动

linux - 在 Linux 中过滤命令输出

bash -/dev/stdin 与 herestring

linux - ubuntu linux sed 影响文件属性吗?

linux - 适用于 Linux 的 Dropbox 客户端如何工作?

php - Web 浏览器中的 Bash 输出

linux - Preg 替换 ../../使用 linux 命令 sed 和 xargs

linux - 在 bash 中使用 sed 查找和替换其后继数字