Как я могу вставить символ вкладки с 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
5   51  

5 ответов:

попробуй: Ctrl+V и нажмите клавишу Tab.

OSX на sedпонимает только \t в шаблоне, а не в замене не понимаю \t вообще, так как это по существу древний 4.2 BSD sed осталось с 1982 года или около того. Используйте литеральную вкладку (которая в bash и vim и Ctrl+V,Tab), или установить GNU coreutils чтобы получить более разумным sed.

использовать ANSI-C стиль цитирования:$'string'

sed $'s/foo/\t/'

так что в вашем примере, просто добавьте $:

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

другой вариант-использовать $(printf '\t') вставить вкладку, например:

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

попробуйте awk

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