您的位置:首页 > 运维架构 > Shell

shell sed

2017-01-16 13:00 405 查看
以上实现将文件中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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: