如何删除连续3个句点前后的所有空格
how to remove all whitespaces in front and beind 3 consecutive periods
我试图删除连续 3 个句点前后的所有空格,并将其替换为实际的椭圆符号。
我试过以下代码:
sed 's/[[:space:]]*\.\.\.[[:space:]]*/…/g'
将3个句点替换为椭圆符号,但前后空格保留。
示例输入。
hello ... world
期望的输出
hello…world
您使用的表达式是 ERE(扩展正则表达式)您必须按如下方式将 -E
选项添加到 sed
以允许它,因为您在您的字符中使用字符 类代码 [[:space:]]
.
sed -E 's/[[:space:]]*\.\.\.[[:space:]]*/.../g' Input_file
没有 -E
尝试:
sed 's/ *\.\.\. */.../g' Input_file
这是另一个sed
echo "hello ... world" | sed -E 's/ +(\.\.\.) +//g'
hello...world
4个点,什么都不做?
echo "hello .... world" | sed -E 's/ +(\.\.\.) +//g'
hello .... world
在bash中,只需使用参数替换...
foo="hello ... world"
foo="${foo//+( )...+( )/...}"
现在,echo "$foo"
,输出:
hello...world
BaSH正则表达式变量替换的语法如下:
${var-name/search/replace}
单个 /
仅替换左侧的第一个匹配项,而双 //
替换所有匹配项。
其中一个 ?*+@!
后跟 (pattern-list)
替换 pattern-list 中出现指定次数的模式,如下所示:
? Zero or one occurrence
* Zero or more occurrences
+ One or more occurrences
@ A single occurence
! Anything that *doesn't* match one of the occurrences
模式列表可以是文字串的任意组合,也可以是字符类,由竖线字符|
分隔
我试图删除连续 3 个句点前后的所有空格,并将其替换为实际的椭圆符号。
我试过以下代码:
sed 's/[[:space:]]*\.\.\.[[:space:]]*/…/g'
将3个句点替换为椭圆符号,但前后空格保留。
示例输入。
hello ... world
期望的输出
hello…world
您使用的表达式是 ERE(扩展正则表达式)您必须按如下方式将 -E
选项添加到 sed
以允许它,因为您在您的字符中使用字符 类代码 [[:space:]]
.
sed -E 's/[[:space:]]*\.\.\.[[:space:]]*/.../g' Input_file
没有 -E
尝试:
sed 's/ *\.\.\. */.../g' Input_file
这是另一个sed
echo "hello ... world" | sed -E 's/ +(\.\.\.) +//g'
hello...world
4个点,什么都不做?
echo "hello .... world" | sed -E 's/ +(\.\.\.) +//g'
hello .... world
在bash中,只需使用参数替换...
foo="hello ... world"
foo="${foo//+( )...+( )/...}"
现在,echo "$foo"
,输出:
hello...world
BaSH正则表达式变量替换的语法如下:
${var-name/search/replace}
单个 /
仅替换左侧的第一个匹配项,而双 //
替换所有匹配项。
其中一个 ?*+@!
后跟 (pattern-list)
替换 pattern-list 中出现指定次数的模式,如下所示:
? Zero or one occurrence
* Zero or more occurrences
+ One or more occurrences
@ A single occurence
! Anything that *doesn't* match one of the occurrences
模式列表可以是文字串的任意组合,也可以是字符类,由竖线字符|