我怎样才能在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
。 使用一个文字标签(在bash
和vim
是Ctrl
+ V
, Tab
),或者安装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}'