echo "12345//69999\7ii\ii/0000i/89/9999" |sed 's|/[^\\/]*|\||g'
12345||\7ii\ii|||
sed 's|/[^\\/]*|\||g'
s 替换
| 分隔符
/ 以 /开头
[^\\/] ^ 不是 \ 或者 /
"*" 通配
|\|| 替换为 |
g 全部替换
12345||\7ii\ii|||
12345 不是以 /开头 没有替换
第一个 / 后面跟了一个 /,没有命中,但是后面不是 .*,是 *
所以此次命中的就是1个 /,
第2个 / 后面跟了69999, 第2次命中的内容为 /69999,碰到 \7停止
重新从\7开始匹配
echo "12345//69999\7ii\ii/0000i/89/9999" |sed 's|/[^\\/].*|\||g'
12345/|
//
第一个/后面跟 /,没有匹配上 注意有一个.
第2个/后面匹配上了,整句话后面不再分析,直接匹配
不带 .的* 会逐个字节分析匹配字符串
带 .* 匹配上第一个之后,后面的内容不再分析,直接匹配上