use*_*970 1 sed regular-expression whitespace
如何将前导空格与sed
(所有这些)匹配?我不是在谈论前导标签,而只是在前导空格上。
从我在 Nano 中做的一个小测试来看,这似乎是正确的:
sed "s/^ //g"
Run Code Online (Sandbox Code Playgroud)
你觉得这个方法有什么问题吗?
注意:“全部”是指文档中的所有前导空格,以防有 2 个或更多,而不仅仅是一个。
删除前导空格: sed "s/^ *//"
删除前导空格: sed "s/^[[:space:]]*//"
删除前导空格和制表符:(sed "s/^[ \t]*//"
适用于 GNU sed)或
sed 's/^[[:blank:]]*//'
(适用于 any sed
)或sed $'s/^[ \t]*//'
(在 ksh/Bash/等中为 提供文字制表符sed
)
正如评论中所说,说明/g
符什么都不做,因为行的开头在行中只出现一次,甚至/g
不会多次重试模式。您需要显式添加条件分支以重复替换:sed -e :a -e 's/^ //' -e ta
^ *
也匹配空字符串(无空格),但这在这里无关紧要。如果要匹配至少有一个空格的行,请使用^ *
(double space) 或^ +
扩展正则表达式。例如,要将所有缩进更改为两个空格,请使用 sed -e 's/^ */ /'
或sed -Ee 's/^ +/ /'
(-E
在例如 GNU 和 FreeBSD 中受支持)