Linux Bash-在以句点开头的行上方添加空行
我需要编辑一个文本文件,在每行上方添加一个以句点开头的空行 以前Linux Bash-在以句点开头的行上方添加空行,linux,bash,Linux,Bash,我需要编辑一个文本文件,在每行上方添加一个以句点开头的空行 以前 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.tx
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
读取-r行时;做
如果[[“$line”==”*];然后
回音“$line”
fi
完成
如何将它们合并在一起?我认为awk脚本将是最有效的
/^\./ {print "";}
{print $0;}
在本例中,将其放入一个名为“awkfile”的文件中,并像“awk-f awkfile.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
我们使用只在行首匹配的^
。因为我们在行首匹配一个句点,所以不必用括号捕捉一个组:我们知道匹配是一个句点。我们需要做的就是在这段时间之前添加一个换行符。使用sed
sed 's/^\./\n\./'
带着awk
awk '/^\./{print ""} 1'
或
使用RegExp可以是:
cat File.txt | sed -r 's/^(\..+)/\n\1/g'
此命令行指示sed(1)
搜索以点开头的行,然后在其前面插入空行。查看sed(1)
手册页面,了解如何使用i
nsert、r
eplace和a
ppend命令
awk 'sub(/^\./,"\n.") 1'
cat File.txt | sed -r 's/^(\..+)/\n\1/g'
$ sed -e '/^\./i\\' pru.txt
Corn
.Apple
Words.
.Orange
Bean