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