linux sed grep awk命令
一、背景
工作中需要使用shell脚本替换文件中的内容。需要实现的功能如下所示。以下的实例都是运行在shell脚本中,如需运行在终端,需要把双引号改成单引号。
二、实例
1)获取某个字符串所在的行数
例如:获取nginx.conf文件的包含"listen 80;"的数据的行号,并存放到beginLine变量
beginLine=`grep "listen 80;"$NGINX_CONF_PATH/nginx.conf -n | awk -F ':' '{print $1}'`
2)在某行后面添加一行数据
例如:在beginLine行后增加listen 443 ssl;字符串到nginx.conf文件中
`sed -i "${beginLine}a listen 443 ssl;" nginx.conf `
3)判断某行字符串是否包含指定的字符串
例如:判断字符串变量linestr中是否包含变量END_MARK的值。
END_MARK="ok"
linestr="source sre"
result=$(echo $linestr | grep "${END_MARK}")
if [[ "$result" != "" ]]
then
echo "包含"
break;
else
echo "不包含"
fi
4)获取文件最后一行的行数
例如:获取nginx.conf文件的最后一行数据的行数,并存放到lastLine变量
lastLine=`awk 'END{print NR}' nginx.conf`