Как я могу вставить символ табуляции с sed в 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
Ответ 1
Попробуйте: Ctrl + V, а затем нажмите Tab.
Ответ 2
OSX sed понимает только \t в шаблоне, а не в замене вообще не понимает \t, так как по существу это древний 4.2BSD sed, оставшийся от 1982 или далее. Используйте литеральную вкладку (которая в bash и vim равна Ctrl + V, Tab), или установите GNU coreutils, чтобы получить более разумный sed.
Ответ 3
Используйте цитирование стиля ANSI-C: $'string'
sed $'s/foo/\t/'
Итак, в вашем примере просто добавьте $:
echo -e "egg\t \t\t salad" | sed -E $'s/[[:blank:]]+/\t/g'
Ответ 4
Другой вариант - использовать $(printf '\t') для вставки вкладки, например:
echo -e "egg\t \t\t salad" | sed -E "s/[[:blank:]]+/$(printf '\t')/g"