我怎样才能在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 

5 Solutions collect form web for “我怎样才能在OS X上插入一个制表符字符?”

尝试: 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}' 
  • 在bash中用(下划线)replace空白的最简单的方法
  • 从另一个文件中出现的文件中删除行
  • 如何使用sed / grep来提取两个单词之间的文本?
  • 如何在awk / sed中多次出现两个标记模式之间select行
  • 如何使用shell(awk,sed,whatever)删除文件中的前两列
  • sed - 未知选项到's'
  • 在使用sed第一次匹配后插入行
  • 如何从匹配行后面开始删除文件中的所有行?
  • 你可以批量编辑在grep中返回的所有文件?
  • 在Mac(BSD)和Linux上均可使用的sed in-place标志
  • 如果它是文件中的最后一个字符,如何删除换行符?