[英]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
在可用的地方更快。
最有效的方法是编写一个与整行匹配的regexp命令,并将输入提取为一系列标记。 您必须先知道所有的标记是什么,以便可以将它们包含在regexp命令中,但是基本上只需要1个命令即可完成整个解析操作。 另一种方法是在整个行上使用split命令,并将“”作为第三个参数传递,然后使用foreach命令遍历每个字符串标记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.