繁体   English   中英

TCL代码转换文件

[英]TCL Code to Convert file

我有一个巨大的文件,其中包含如下不同的字段:

ip server-ip-address = 20.29.77.10/22
tcp either-port = 80

我需要编写脚本以将这些字段转换为以下格式。最有效的方法是什么?

remote-ip 20.29.77.10/22
remote-port eq 80

我建议最有效的方法是调出sed:

exec sed -i {
    s/^ip server-ip-address =/remote-ip/
    s/^tcp either-port =/remote-port eq/
} $filename

格伦·杰克曼(Glenn Jackman)的解决方案可以在缺少sed (未经测试的代码)的系统上这样实现:

package require fileutil

proc conv data {
    regsub -all -line {^ip server-ip-address =} $data remote-ip data
    regsub -all -line {^tcp either-port =} $data {remote-port eq}
}

::fileutil::updateInPlace $filename conv

我认为sed在可用的地方更快。

文档: fileutil软件包, packageprocregsub

最有效的方法是编写一个与整行匹配的regexp命令,并将输入提取为一系列标记。 您必须先知道所有的标记是什么,以便可以将它们包含在regexp命令中,但是基本上只需要1个命令即可完成整个解析操作。 另一种方法是在整个行上使用split命令,并将“”作为第三个参数传递,然后使用foreach命令遍历每个字符串标记。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM