显示第1行
sed -n 1p f1.sh
显示1,3行
sed -n '1p;3p' f1.sh
sed -n -e 1p -e 3p f1.sh
显示1-3行
sed -n 1,3p f1.sh
显示最后一行
sed -n '$p' f1.sh
显示含“love”且含”you“的行
grep love f1.sh | grep unix f1.sh
在第1行前插入1行’hello’内容:
sed -i '1i hello' f1.sh #-i表示直接写文件,否则只是写文件副本。
在第1行后插入2行’hello’,’world’内容:
sed -e '1a hello' -e '1a world' f1.sh
把第1行替换为hello:
sed "1c hello" f1.sh
将第1行中的unix替换为hello:
sed '2s/unix/hello/g' f1.sh #末尾的g表示替换匹配的全部字符串,否则只会替换第一个匹配
将全文中的love替换为like:
sed 's/love/like/g' f1.sh #g表示替换一行中的所有
在第1行首添加hello:
sed '1s/^/hello/' f1.sh #实际用了替换,^表示行首
在第1行尾添加hello:
sed "1s/$/hello/" f1.sh #$表示行尾
删除第1行的love:
sed "1s/love//g" f1.sh #替换为none
删除第1行:
sed '1d' f1.sh
路径的替换,特殊在于有”/”,如将”/var/log/tomcat”替换为”LOG_DIR/tomcat”:
LOG_DIR=/var/log
APP_LOG=/var/log/tomcat
echo ${APP_LOG} | sed "s:${LOG_DIR}:LOG_DIR:g"
#由于替换文本中有'/',故sed命令中用':'做分隔符,
#也可用其他符号做分隔符,只要分隔符不与替换字符串中的字符重复
linux自带的替换表达式,效率更高,也可用于路径替换:
LOG_DIR=/var/log
APP_LOG=/var/log/tomcat
echo ${APP_LOG//${LOG_DIR}/LOG_DIR}
# ${string//subStr/replaceStr}
未解决:
对倒数第2-4行进行操作:
对含love且不含you的行作操作: