关于sed命令中[ ]*的含义及`s/[ ]*|||[ ] */|||/g`作用的疑问
关于sed命令
s/[ ]*|||[ ] */|||/g的解析 [ ]*的含义:[ ]匹配单个空格字符,*是正则表达式量词,表示匹配0个或多个前面的字符,所以[ ]*就是匹配任意数量(包括0个)的连续空格。- 整个命令的作用:核心是清除
|||前后所有的空格,具体逻辑为:- 匹配「
|||前任意数量空格 +|||+|||后任意数量空格」的整体 - 将这个整体替换为无前后空格的
|||
- 匹配「
- 测试场景说明:如果测试输入里
|||前后本来就没有空格,替换后内容自然不变,所以会误以为命令没作用。举几个实际效果的例子:- 输入:
hello ||| world→ 输出:hello|||world - 输入:
|||→ 输出:||| - 输入:
abc|||def→ 输出:abc|||def(和原内容一致,看起来无变化)
- 输入:
内容的提问来源于stack exchange,提问作者Sriharsha
相关产品推荐
相关产品推荐

