sed查找实例:mysql_process.sh

标准

#!/bin/bash
#
 
FILE_NAME=/home/roo/Desktop/shell_code/day6/my.cnf
# 获取所有的片段
function get_all_segments
{
    echo `sed -n '/\[.*\]/p' $FILE_NAME | sed -e 's/\[//g' -e 's/\]//g'`
}
# 统计单个片段 配置行数
function count_items_in_segment
{
    # 找到[xxx]并且下一个 [.*] 的项中间的内容就是一段配置
    items=`sed -n '/\['$1'\]/,/\[.*\]/p' "$FILE_NAME" | grep -v "^$" | grep -v "^#" | grep -v "\[.*\]"| wc -l`
    echo $items
    # for 循环打印并计算my.cnf每一行的配置,适合配置项之间没有空格的情况
    #index=0
    #for item in $items;
    #do
    #    index=`expr $index + 1`
    #done
 
    #echo $index
 
}
 
number=0
for segment in `get_all_segments`
do
    number=`expr $number + 1`
    # 将每个片段当做参数传进来计算
    items_count=`count_items_in_segment $segment`
    echo "$number: $segment $items_count"
done

自己写的

#!/bin/bash
#

#定义文件变量

FILE_NAME=/tmp/my.cnf

#列出各个段的函数

function get_all_segments

{
echo `sed -n '/\[/p' $FILE_NAME | sed -e 's/\[//g' -e 's/\]//g'`
} 

#查找段有多少参数的函数

function count_items_in_segment

{
items=`sed -n "/\[$1\]/,/^\[/p" $FILE_NAME | grep -v "^#" | grep -v "^$" | grep -v "^\[" | wc -l`
echo $items
}

#加入计数器

number=0

#遍历段并输出参数和的循环

for segment in `get_all_segments`

do
number=`expr $number + 1`
items_count=`count_items_in_segment $segment`
echo "$number: $segment $items_count"
done

 更多:https://www.cnblogs.com/crazymagic/p/11147518.html

posted @ 2019-11-21 14:34  豆浆D  阅读(200)  评论(0编辑  收藏  举报