匹配
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