在写shell脚本时,如果要对一个文件里的内容逐行进行处理,以获得所需信息或数据,可能会使用到以下的处理。
首先通过sed获取每行,可以结合while循环
lines=2 #表示行数
line=`sed -n "$lines"p filename` #-n表示禁止标准输出,2p表示输出第二行
去掉注释
line=${line%%\#*}
去掉左边的空格部分
line=${line#"${line%%[![:space:]]*}"}
去掉右边的空格部分
line=${line%"${line##*[![:space:]]}"}
获得=号左边的值
left=${line%%=*}
获得=号右边的值
right=${line##*=}
转换大小写
$(echo $left | tr A-Z a-z) #大写转小写
$(echo $left | tr a-z A-Z) #小写转大写
tr SET1 SET2,凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符,详见tr命令
删除变量中所有字母部分
var=${var//[a-zA-Z]}
在变量子串替换中,
${var/Pattern/Replacement}
在变量var第一个匹配Pattern的字符串用Replacement代替.
${var//Pattern/Replacement}
全局替换,所有在变量var中被Pattern匹配到的都由Replacement代替.
如果省略了Replacement ,则表示删除,即替换为空
详细的参数替换的知识点可以参考以下文章
http://www.360doc.com/content/15/0323/15/11752329_457419985.shtml