1、替换功能
情况1:我这边从浏览器复制了一部分数据为txt,内容如下所示
可以看出,这里的html代码,都是一行的。我采取用</p>
进行换行处理,这样,看起来就清爽很多。
错误命令:
[root@docker01 tmp]# sed -i 's/</p>/</p>\n/g' yh.txt
sed: -e expression #1, char 8: unknown option to `s'
这个就很费解,因为,我们大家一开始学习用sed替换的时候,都是用/
这个符号进行查找替换的。如:
尝试了好久,都不行。以为是<>
导致的,于是对<>
进行一下转义,发现还是报错,依然不行
[root@docker01 tmp]# sed -i 's/\</p\>/\</p\>\n/g' yh.txt
sed: -e expression #1, char 10: unknown option to `s'
最后,找到正确方法:
原来,/
这个不是固定不变的,可以换成任意分隔符,下面两条命令都可以实现效果。
sed -i 's|</p>|</p>\n|g' yh.txt
sed -i 's#</p>#</p>\n#g' yh.txt
情况2:去除空格
设置变量
var=' aa bb '
echo "${#var}" # 12
其中,${#var}表示获取字符串的长度
1、去除行首空格
var1=$(echo "${var}" |sed 's/^[ ]*//g')
echo "${#var1}" # 8
其中,sed ‘s/^[ ]*//g'表示使用空字符匹配行首为空格的字符串;
依次拆解释义:
字符 's' 表示替换;
字符 '/' 表示作为分隔符;
字符 '^' 表示开头;
字符 '$' 表示结尾;
字符 '[ ]' 表示匹配指定字符范围内的任意单个字符,[ ]包含一个空格;
字符 '*' 作为通配符,匹配0个或任意多个;
字符 'g’ 表示全部匹配;
2、去除行尾空格
var2=$(echo "${var}" |sed 's/[ ]*$//g')
echo "${#var2}"
# 10
3、去除所有空格
var3=$(echo "${var}" |sed 's/[[:space:]]//g')
echo "${#var3}"
# 4