shell sed

 
匹配
sed -n '/pattern/p' file_name |sed -n 7,12p
#pattern是你要查的内容
#file_name是你要查的文件
以上实现:打印出匹配结果中的7-12行
 
sed -n '/pattern/{7,12p}' file_name

以上实现将文件中7到12行中匹配的数据显示出来

 

sed -n  '/^[^#]/p' file_name

匹配非#开头的所有行

 

替换行首行尾

sed -i 's/^/str/' file_name

sed -i 's/$/str/' file_name

sed '/./{s/^/HEAD&/;s/$/&TAIL/}' file_name

 

实例 :

echo "#ifndef __CONF_H__" >$CONFIG_FILE_H
echo "#define __CONF_H__">>$CONFIG_FILE_H
echo "~~">>$CONFIG_FILE_H

sed 's/^#\(.*\)=.*/# \1  is not set/g' .config\
    |sed 's/^#/\/\//g'\
    |sed 's/\(.*\)=y/#define \1/g'\
    |sed 's/\(.*\)=\(.*\)/#define \1 \2/g' >> $CONFIG_FILE_H

echo "">>$CONFIG_FILE_H
echo "#endif">>$CONFIG_FILE_H


其中sed 第一句

  匹配以‘#’开头

   \(.*\)指代接下来的字符串用括号可以被后面引用,比如此处第一个括号可以用 \1 引用

        = 匹配 ‘=’

       .*指代接下来的字符串

        这样就匹配到了 '# xxxa = xxxb'  替换为 '# xxxa is not set'

第二句

  匹配#开头,将‘#’换为‘//’

第三句

  匹配 ' xxxa = y' 替换为 #define xxxa

posted @ 2017-01-16 13:00  chencesc  阅读(108)  评论(0编辑  收藏  举报