linux - Bash - 在以句点开头的行上方添加空行

标签 linux bash

我需要通过在以句点开头的每行上方添加一个空行来编辑文本文件。

之前

Corn
.Apple
Words.
.Orange
Bean

之后

Corn

.Apple
Words.

.Orange
Bean

这是我到目前为止所拥有的。 这会在每个句号后添加一个空格。实际文件中还有更多内容。

cat File.txt | sed -r 's/([.]+)/\n\1/g'

这显示以句点开头的行

while read -r line; do

if [[ "$line" == "."* ]]; then

echo "$line"

fi

done < File.txt

如何将它们合并在一起?

最佳答案

这会产生您想要的输出:

$ sed 's/^[.]/\n./' file
Corn

.Apple
Words.

.Orange
Bean

如果您想就地更改文件,请使用 sed 的 -i 选项:

sed -i 's/^[.]/\n./' file

对于 Mac OSX 或其他 BSD 系统,请使用:

sed -i '' 's/^[.]/\n./' file

我们使用 ^ 只匹配行的开头。由于我们在行的开头匹配句点,因此没有必要捕获带括号的组:我们知道匹配是句点。我们需要做的就是在该句点之前添加一个换行符。

关于linux - Bash - 在以句点开头的行上方添加空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32322712/

相关文章:

python - 如何在 Python 中调用 linux 命令而不等待结果 (Linux)

linux - $PWD 是否总是等于 $(realpath .)

linux - 为什么 echo `cat file` 会丢失所有格式?

bash - 从文件中提取单词

git - 如何检查 if/else 中是否存在标签

linux - 如何使用 IFS 读取 bash 脚本中的一行,并在读取该行时在指定字符之间创建一个新行

linux - 用户目录 "End of script output before headers"中的 Apache CGI

linux - Shell脚本选择多次重复或退出

linux - 虚拟表未生成

linux - 以编程方式访问 zip 文件中的文件?