如何将 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
改用。