很长时间没有接触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