我正在尝试使用sed替换4个空格的选项卡,但它不起作用.
这是我的代码:
sed -i '{s/\t/ \{4\}/g}' filename
Run Code Online (Sandbox Code Playgroud)
任何建议都表示赞赏.
anu*_*ava 10
在sed更换不应该是一个正则表达式,所以使用:
sed -i.bak $'s/\t/ /g' filename
Run Code Online (Sandbox Code Playgroud)
在gnu-sed甚至这将工作:
sed -i.bak 's/\t/ /g' filename
Run Code Online (Sandbox Code Playgroud)
已经有一个可接受的答案,但它对基本选项卡扩展进行了硬编码,而选项卡具有适合对齐的可变宽度,这在前面的答案中没有考虑到。例如:
12\tabcd
1234\tabcd
Run Code Online (Sandbox Code Playgroud)
应该扩展到正确对齐:
12 abcd
1234 abcd
Run Code Online (Sandbox Code Playgroud)
但给定的 sed 命令将错误地扩展为这种未对齐的输出:
% printf "12\tabcd\n1234\tabcd\n" | sed 's/\t/ /g'
12 abcd
1234 abcd
Run Code Online (Sandbox Code Playgroud)
正确的方法是使用标准命令expand,它安装在所有系统上。
% printf "12\tabcd\n1234\tabcd\n" | expand
12 abcd
1234 abcd
Run Code Online (Sandbox Code Playgroud)
如果您想使用大小为 4 的制表位,请传递-t 4。
| 归档时间: |
|
| 查看次数: |
8614 次 |
| 最近记录: |