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

1、替换功能

情况1:我这边从浏览器复制了一部分数据为txt,内容如下所示

Linux工具:sed命令的相关功能_第1张图片
可以看出,这里的html代码,都是一行的。我采取用

进行换行处理,这样,看起来就清爽很多。
错误命令:

 [root@docker01 tmp]# sed -i 's/

/

\n/g'
yh.txt sed: -e expression #1, char 8: unknown option to `s'

这个就很费解,因为,我们大家一开始学习用sed替换的时候,都是用/这个符号进行查找替换的。如:
Linux工具:sed命令的相关功能_第2张图片
尝试了好久,都不行。以为是<>导致的,于是对<>进行一下转义,发现还是报错,依然不行

[root@docker01 tmp]# sed -i 's/\/\\n/g' yh.txt
sed: -e expression #1, char 10: unknown option to `s'

最后,找到正确方法:
原来,/这个不是固定不变的,可以换成任意分隔符,下面两条命令都可以实现效果。

 sed -i 's|

|

\n|g'
yh.txt
sed -i 's#

#

\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

你可能感兴趣的:(Linux,linux)