`pwd`, но опустить первые n каталогов

pwd дает полный путь к текущему каталогу, например:

 /first/second/third/anotherdir/thefinaldirectory 

Как я могу опустить первый n, скажем, три каталога, так что только

 /anotherdir/thefinaldirectory 

возвращается?

Думаю, это должно быть возможно с sed ?

3 Solutions collect form web for “`pwd`, но опустить первые n каталогов”

У Bash есть встроенные строковые манипуляции:

 echo "/${PWD#/*/*/*/}" 

Вы можете использовать cut для этого, например:

 pwd | cut -d/ -f 4- 

prints разбивает вывод pwd на / и печатает с четвертого поля до конца.

В вашем случае это будет:

 echo "/first/second/third/anotherdir/thefinaldirectory" | cut -d/ -f 5- 

С любым POSIX sed :

 pwd | sed 's,\(/[^/]*\)\{3\},,' 

или:

 pwd | sed -E 's,(/[^/]*){3},,' 

-E работает с GNU и BSD sed и станет стандартом в ближайшем будущем .

  • Использование 'sed' для поиска и замены
  • Сопоставьте начало линии с чем-то там?
  • Редактируйте несколько строк из определенного раздела INI-файла
  • Сопоставьте текущую строку до строки, которая не соответствует шаблону
  • Замените все вхождения символа в переменной с помощью скрипта korn
  • sed предотвращает удаление остальной линии
  • «Sed» переписать файл для отображения целых чисел и удалить оставшиеся символы
  • bash - извлекает имена файлов из html-файла, содержащего несколько ссылок
  • Замените несколько строк строкой, когда номера строк хранятся в файле
  • создайте новый столбец на основе существующих столбцов, используя оператор else в awk
  • Отфильтруйте пути из текстового файла, который глубже, чем их непосредственный предшественник
  • Linux и Unix - лучшая ОС в мире.