bash如何替换/删除紧跟空白的行首

bash如何替换/删除紧跟空白的行首,bash,text,sed,Bash,Text,Sed,我正在解析长文本,前面命令的部分副产品是: 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 没有成功

我正在解析长文本,前面命令的部分副产品是: 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

我会使用
sed

sed -E '/^\s*$/d; s/^\s*//;' < in > out
sed-E'/^\s*$/d;s/^\s*/;'<输入>输出
这将删除只有空格的行,并从其他行的开头去除空格

c、 f


有一些改进,但这是总体思路。

我不理解你的描述。你是想摆脱行首的空白还是别的什么?没错,我想摆脱句子开头的空白。我假设这也会让我清理只有一个空格(tr-s[:space:])的空行。是在句子的开头,还是在一行的开头?如果它在一个句子的开头,一个句子是如何定义的?此外,清理空行通常是一件单独的事情。请将示例输入(无描述、无图像、无链接)和您希望的输出添加到您的问题中(无注释)。完成。为reference.sed的/^/'添加了示例输入和输出。由于删除的行没有任何剩余空间,因此仅此一项就可以(我测试)删除仅有一个空格的行(从tr-s[:space:])。Thanks@HenryM空行不会自动删除(除非管道中有其他东西在执行此操作?),代码如下:tr-s[:space:output.txt。根据我的结果和我的样本结果,它是有效的。tr-s只留下一个空格,当它是一行中唯一的东西时,这会让人恼火。您的代码删除了行中最后一个空格,它会分散。如果一行中没有任何内容,我怎么可能存在……我缺少什么吗?如果
sed
tr
只需一个进程就可以完成两个简单的功能,为什么要同时使用
sed
呢?tr-s[:space:]还去掉了许多由文本括起来的连续空格。plus非常容易使用
sed -E '/^\s*$/d; s/^\s*//;' < in > out