便携。
TAB=$(printf '\t')
sed "s/^ */$TAB/" < file.in > file.out
Run Code Online (Sandbox Code Playgroud)
一些炮弹(ksh93
,zsh
,bash
,mksh
和FreeBSDsh
至少)也支持行情的一种特殊形式($'...'
)里的东西一样\t
被扩展。
sed $'s/^ */\t/' < file.in > file.out
Run Code Online (Sandbox Code Playgroud)
该fish
外壳扩展引号以外的人:
sed 's/^ */'\t/ < file.in > file.out
Run Code Online (Sandbox Code Playgroud)
sed
像 GNU 这样的一些实现 本身sed
也识别\t
出 TAB 的含义。因此,对于这些,这也将起作用:
sed 's/^ */\t/' < file.in > file.out
Run Code Online (Sandbox Code Playgroud)
可移植地,awk
确实\t
在其双引号内展开。并且还使用扩展的正则表达式,因此可以使用x+
代替xx*
:
awk '{sub(/^ +/, "\t"); print}' < file.in > file.out
Run Code Online (Sandbox Code Playgroud)