首页 > 解决方案 > bash如何替换/删除行首后跟空格

问题描述

我正在解析长文本,之前命令的部分副产品是:1)只有一个空格的行 2)有一个空格后跟一个句子的行。

我该如何摆脱它们?

我尝试了以下方法:

tr -s [:space:] |sed -r 's/\^ /\^/g' > output.txt

和以下

tr -s [:space:] |sed -r 's/\n //g' > output.txt

和以下

sed 's/\([.!?]\)[[:space:]]*/\1\n/g' file > output.txt

没有成功。

示例输入(下划线代表空间以便更好地视觉理解)

_Sir_William_Blackstone,
_
_Commentaries_on_the

样本输出

Sir_William_Blackstone,
Commentaries_on_the

标签: bashtextsed

解决方案


我会用sed.

sed -E '/^\s*$/d; s/^\s*//;' < in > out

这将删除只有空格的行,并从其他行的开头去除空格。

参见https://www.gnu.org/software/sed/manual/sed.html

有一些改进,但这是一般的想法。


推荐阅读