我有一个文本文件,我需要一个使用sed
的命令,在每行只包含大写字母和空格后插入一个空行。
答案 0 :(得分:3)
这可能适合你(GNU sed):
sed '/^[[:blank:][:upper:]][[:blank:][:upper:]]*$/G' file
这会将保留空间(默认情况下包含换行符)附加到包含至少一个或多个空格或大写字符的行。
答案 1 :(得分:2)
假设:
object Interpreter extends (StartupActionA ~> Id) {
override def apply[A](fa: StartupActionA[A]): Id[A] = fa match {
case StartCluster =>
println("Starting up the Akka Cluster").asInstanceOf[A]
case StartEventActorShard =>
system.actorOf(Props(new MyActor()), "MyActor").asInstanceOf[A]
case StartKafka(ref) =>
Some(ref).asInstanceOf[A]
}
}
您可以使用$ cat file
LINE LINE LINE
Line Line Line
Line 1
LINE 2
END!
====
向该行添加s///
:
使用POSIX sed,在sed脚本中使用文字新行:
\n
使用GNU sed,您可以使用$ sed 's/^\([[:upper:][:blank:]]*\)$/\1\
/' file
LINE LINE LINE
Line Line Line
Line 1
LINE 2
END!
====
:
\n
您也可以使用$ sed 's/^\([[:upper:][:blank:]]*\)$/\1\n/' file
附加到sed中。我试图让sed a\
工作,但由于POSIX和BSD不支持append
使用GNU sed(注意\n
之后的空格):
a\
BSD:
$ sed '/^[[:upper:][:blank:]]*$/a\ ' file
由于GNU版本在空白行上有空格,因此它们不完全等效。
POSIX sed的版本我没有使用其中任何一个......
鉴于$ sed '/^[[:upper:][:blank:]]*$/a\
\
' file
的平台和版本差异,您可能会考虑sed
来执行此操作,因为简单的awk更容易普及。
这适用于我拥有的每个awk
:
awk
使用$ awk '1; /^[[:upper:][:blank:]]*$/{print ""}' file
你也可以通过确保至少非空白来使空白行不加倍:
awk
答案 2 :(得分:0)
不确定。只需使用a
插入行:
sed '/^[[:blank:]A-Z]*$/a\'
a
命令在每个匹配行之后插入字符串(用反斜杠结束字符串)。所以上面的命令只是在包含大写字母和空格的所有行之后插入一个空行。这正是你想要的。