嘿伙计们很喜欢这个,我应该用sed格式化一个xml片段。
这是原始代码段:
<input>
<program_name>
CS
</program_name>
<course_name>
ART CLASS
</course_name>
<instructor>
John Smith
</instructor>
</input>
我的sed命令应将其格式化为以下内容:
<input>
<program_name>CS</program_name>
<course_name>ART CLASS</course_name>
<instructor>John Smith</instructor>
</input>
到目前为止,我有以下内容:
sed -r 'N;N;s/<([a-z_]+)>( *\n* *)([[a-z]+ ?[a-z]+]+)( *\n* *)(<\1>)/<\1>\3\5/g' question.txt
不幸的是,似乎没有任何改变,任何提示/帮助都非常感激。
答案 0 :(得分:2)
免责声明:流编辑器和正则表达式不是解析XML或HTML等标记语言的好工具,在这种情况下,我们不必依赖标记匹配,但如果您确实需要解析或者在bash中使用xml做任何事情,请到这里How to parse XML in Bash?
我发现原始正则表达式中存在足够的错误,我选择切换到自己的错误来执行您想要的操作:
import kafka.utils.{TestUtils, ZKStringSerializer, ZkUtils}
import org.I0Itec.zkclient.{ZkClient, ZkConnection}
import kafka.utils.ZkUtils._
var zkUtils: ZkUtils = _
//val zkConnection= new ZkConnection(zkConn)
//zkClient = new ZkClient(zkConn,5000,5000,ZKStringSerializer)
//val zkUtils = new ZkUtils(zkClient, zkConnection, false)
val (zkClient, zkConnection) = ZkUtils.createZkClientAndConnection(
zkConn, sessionTimeoutMs, connectionTimeoutMs)
zkUtils = new ZkUtils(zkClient, zkConnection, false)
除了正则表达式错误之外,你可能会遇到其他问题,将多行缓冲到sed或重叠匹配,你可能想看一下这个问题来编写一个好的多行bash脚本:How can I replace a newline (\n) using sed?