Как я могу сделать свою работу команды sed над OSX, а также Ubuntu

В современных системах Linux вообще Вы видите под /dev (и несколько других каталогов как /proc и /sys) фальшивка, это - представление во внутренности ядра или конфигурацию машины). В исходных системах Unix под /dev условно Вы нашли бы специальные файлы, соответствующие устройствам настроенный в систему.

2
20.04.2014, 22:25
1 ответ

Части \ + и \? вашей команды sed являются расширениями GNU - POSIX-совместимый sed вообще не может использовать эти аспекты расширенного регулярного выражения. Вместо этого вы можете использовать \ {1, \} и \ {0,1 \} . Попробуйте следующее:

LOCATION='\033[01;34m\]`pwd |
  sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'

Для получения дополнительной информации см. - http://pubs.opengroup.org/onlinepubs/009696699/utilities/sed.html и http: //pubs.opengroup. org / onlinepubs / 009695399 / basedefs / xbd_chap09.html .

Кроме того, вы можете включить расширенные регулярные выражения в OSX sed , используя -E . С этим вы можете сделать:

LOCATION='\033[01;34m\]`pwd |
  sed -E "s#\(/[^/]+/[^/]+/[^/]+/\).*\(/[^/]+/[^/]+\)/?#\1_\2#g"`'

Однако это не будет работать с GNU sed (для этого используется -r ). Использование решения POSIX обеспечит лучшую переносимость.

4
27.01.2020, 22:00

Теги

Похожие вопросы