字符串插入替换(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