sed 将 4 个空格转换为 2

chr*_*lee 16 sed

如何将 4 个空格转换为 2 个空格sed?是否可以?

我找到了这个,但它将制表符转换为空格:

sed -r ':f; s|^(\t*)\s{4}|\1\t|g; t f' file

Gil*_*il' 14

您发布的脚本将 4*n 个空格转换为 n 个制表符,前提是这些空格前仅是制表符。

如果你想用 2 个空格替换 4 个空格,但只能缩进,虽然可以用 sed 来做,我推荐 Perl。

perl -pe 's{^((?: {4})*)}{" " x (2*length($1)/4)}e' file
Run Code Online (Sandbox Code Playgroud)

在 sed 中:

sed -e 's/^/~/' -e ': r' -e 's/^\( *\)~    /\1  ~/' -e 't r' -e 's/~//' file
Run Code Online (Sandbox Code Playgroud)

您可能想indent改用。


Tho*_*hor 5

直接的方法行不通:

sed -r 's/ {4}/  /g'
Run Code Online (Sandbox Code Playgroud)

如果没有,请在失败的地方发布一些输入。