【发布时间】:2015-07-30 23:54:12
【问题描述】:
我有以下代码:
set a "10.20.30.40"
regsub -all {.([0-9]+).([0-9]+).} $a {\2 \1} b
我正在尝试 grep IP 地址的第 2 和第 3 个八位字节。
预期输出:
20 30
实际输出:
20 04 0
我的错误是什么?
【问题讨论】:
-
你需要转义“.”像“\”这样的字符.没有转义,“。”匹配任何字符。
-
尝试了同样的方法,但没有运气 regsub -all {\.([0-9]+)\.([0-9]+)\.} $a {\2 \1} b
-
@Bharathi:对不起。我不清楚你的意图。是否需要匹配变量
a中的20.30.并替换为其他一些? -
知道了。您需要将“.20.30”替换为“30.20”。对吧?
-
@Bharathi :如果您只是想保存第 2 和第 3 个八位字节,那么为什么要
regsub呢?regexp本身就足够了,对吧?为什么还要麻烦反向引用?
标签: regex tcl regexp-replace regexp-substr