我怎样才能在OS X上插入一个制表符字符?

我努力了:

echo -e "egg\t \t\t salad" | sed -E 's/[[:blank:]]+/\t/g' 

其结果是:

 eggtsalad 

和…

 echo -e "egg\t \t\t salad" | sed -E 's/[[:blank:]]+/\\t/g' 

其结果是:

 egg\tsalad 

我想要什么:

 egg salad 

尝试: Ctrl + V ,然后按Tab键

OSX的sed 只能理解模式,而不是在replace中根本不了解,因为它基本上是从1982年起遗留下来的古老的4.2BSD sed 。 使用一个文字标签(在bashvimCtrl + VTab ),或者安装GNU coreutils来获得一个更合理的sed

另一个select是使用$(printf '\t')来插入一个标签,例如:

 echo -e "egg\t \t\t salad" | sed -E "s/[[:blank:]]+/$(printf '\t')/g" 

使用ANSI-C风格的引用: $'string'

 sed $'s/foo/\t/' 

所以在你的例子中,只需添加一个$

 echo -e "egg\t \t\t salad" | sed -E $'s/[[:blank:]]+/\t/g' 

试试awk

 echo -e "egg\t \t\t salad" | awk '{gsub(/[[:blank:]]+/,"\t");print}'