shell 进阶

字符串插入替换(sed)

1,插入与删除

#特定字符串的行前插入新行
sed -i '/特定字符串/i 新行字符串' file

#特定字符串的行后插入新行
sed -i '/特定字符串/a 新行字符串' file

#文件末尾插入新行
sed -i '$a 新行字符串' file

#将包含特定字符串的行删除
sed -i '/字符串/d' file

2,字符串替换

# 替换文件中的所有匹配项(不带/g只会替换每行第一个匹配项)
sed -i 's/原字符串/替换字符串/g' filename

例如:
#将test.sh中name=XXX替换成name=lily
sed -i 's/name=.*/name=lily/g' ./test.sh

#如果同一行是“name=XXX,ageXXX”的情况,需要加上逗号:
sed -i 's/name=.*,/name=lily,/g' ./test.sh


#假设name固定为4字母,也可以如下实现:
sed -i 's/name=[a-zA-Z]\{4\}/name=lily/g' ./test.sh

说明:
\([0-9]\{3\}\)  匹配数字连续出现三次
[a-zA-Z]\{3\} 匹配字母联系出现三次

比较

参数个数: $#

整数比较 
-eq 等于,如:if [ "$a" -eq "$b" ] 
-ne 不等于,如:if [ "$a" -ne "$b" ] 
-gt 大于,如:if [ "$a" -gt "$b" ] 
-ge 大于等于,如:if [ "$a" -ge "$b" ] 
-lt 小于,如:if [ "$a" -lt "$b" ] 
-le 小于等于,如:if [ "$a" -le "$b" ] 
> 大于(需要双括号),如:(("$a" > "$b")) 
>= 大于等于(需要双括号),如:(("$a" >= "$b")) 

字符串比较 
= 等于,如:if [ "$a" = "$b" ] 
== 等于,如:if [ "$a" == "$b" ],与=等价 
注意:==的功能在[[]]和[]中的行为是不同的,如下: 
 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true 
 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true 

 [ $a == z* ] # File globbing 和word splitting将会发生 
 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true 

猜你喜欢

转载自blog.csdn.net/qq_15437629/article/details/81049981