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

原文地址:https://www.cnblogs.com/chencesc/p/6289233.html