Bash
1 前言
一个问题,一篇文章,一出故事。
笔者写Shell经常需要使用sed命令,然而很多用法经常忘记,为了便于自己回忆,于是整理本章节。
2 最佳实践
2.1 删除操作
2.1.1 删除两个行号之间的行
sed -i '5,8d' filename
如果需要使用变量传递,请参考如下范例,
lineStart=5 lineEnd=8 sed -i -e "${lineStart},${lineEnd}d" filename
2.1.2 删除第一行到某行
sed -i '1,8d' filename
如果需要使用变量传递,请参考如下范例,
lineEnd=8 sed -i -e "1,${lineEnd}d" filename
2.1.3 删除某行后面的所有行
sed -i '8,$d' filename
如果需要使用变量传递,请参考如下范例,
lineEnd=8 sed -i -e "1,$d" filename
2.1.4 删除最后一行
sed -i '$d' filename
2.1.5 删除所有空行
sed -i '/^$/d' filename
2.1.6 删除包含两个字符串之间的行
sed -i '/start_string/,/end_string/d' filename
2.2 替换操作
2.2.1 替换全文的空格
sed 's/ //g'
另外,如下写法也有同样效果,
sed s/[[:space:]]//g
2.2.2 替换行首的空格
sed 's/^[ \t]*//g'
2.2.3 替换行尾的空格
sed 's/[ \t]*$//g'
2.2.4 控制字符转义
echo ' `~!@#$%^&*()_+{}[]|\:;",./?' | sed 's/[[:blank:]]\|[&'"'"'()]/\\&/g' echo ' `~!@#$%^&*()_+{}[]|\:;",./?' | sed 's/[^[:alnum:]]/\\&/g'
参阅文档
====================
https://quantchem.kuleuven.be/unix_manual/playing/sed/addresses.html
https://www.jianshu.com/p/e4362f863ffc
没有评论