Поскольку Mac OSX sed
не поддерживает \s
. Только GNU sed
поддерживает \s
.
В Mac OSX \s
не работает, даже с цитированием $''
ANSI -C.
$ echo $'1\t2 3' | sed 's/\s//g'
1 2 3
$ echo $'1\t2 3' | sed $'s/\s//g'
1 2 3
Вместо этого вы можете использовать[[:space:]]
$ echo $'1\t2 3' | sed 's/[[:space:]]//g'
123
Или вы можете использовать [ \t]
, но вам понадобятся кавычки $''
ANSI -C для символа табуляции.
$ echo $'1\t2 3' | sed $'s/[ \t]//g'
123
Я заменил файлы для cat
на _замены процессов-:
]# cat ~/0/test <(tac <~/0/test) <(grep 'world' <~/0/test) <(tac <~/0/test)
hello
world
world
hello
world
world
hello
Так что в принципе это работает,
Но я знаю эту ошибку "fd/63"; а спровоцировать? Убирая пробел, он как-то «работает».
]# cat ~/0/test <(tac <~/0/test) <(grep 'world' <~/0/test)<(tac <~/0/test)
hello
world
world
hello
cat: /dev/fd/62/dev/fd/61: Not a directory
/dev/fd/
— файловые дескрипторы; стандартный способ реализации PS.