Linux工具:sed命令的相关功能

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值