您的位置:首页 > 运维架构 > Shell

sed的\(.....\)\(...\)/\n 这种型式的理解

2016-06-14 09:28 239 查看
很长时间没有接触shell 脚本了,最近两个月需要处理一些shell脚本,sed 的一些正则表达式细节耗费了很多时间。

data_var1=`echo $1 | sed 's/\(.*\)\(.\)$/\2/'`


此名结果返回$1的最后一字符,例如:

echo "linux_susu_002" | sed 's/\(.*\)\(.\)$/\2/'


返回结果为“2”。是如果匹配及执行替换的呢?。
\(.*\) \(.\)$
将语句分两部份。第一部 .* 匹配可以匹配所有,便多了一个
\(.\)$
则第2部份匹配最后一个字符。故下面语句:

echo "Linux_open_002" | sed 's/\(.*\)\(...\)$/\1two/'


显示结果为:

Linux_open_**two**.

mac 编码转换方式:

echo "af8da8722df" | sed 's/^\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4/'


显示结果为:

af:8d:a8:72
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell 正则表达式 sed