На этот вопрос уже есть ответ здесь:
Я беру содержимое каталога с помощью du -a / test1 | cut -f2
и получаю следующее:
/test1/file1
/test1/directory1
/test1/directory1/file2
Я надеюсь использовать что-то вроде cut
, sed
или grep
, чтобы сказать «что угодно $ (pwd)
есть, отрубить это перед выходом."
Например, если / test1 / содержит другой каталог с именем 'test1', я бы хотел сохранить этот подкаталог в моем выводе, поэтому, если бы у меня было:
/test1/test1/
, мой вывод в идеале был бы
test1/
Спасибо вас за вашу помощь.
РЕДАКТИРОВАТЬ:
Я попробовал советы, описанные в Используйте sed для строковой переменной, а не для файла . Я могу получить результат, аналогичный тому, что ищет мой пример , но он либо извлекает более одного экземпляра / test1 на строку, либо работает только с первой строкой переменной. Это не действует так же, как «В начале каждой строки удалить $ (pwd)
, но только один раз для каждой строки "
использовать sed в строке ответ работает только с самой первой строкой моей многострочной переменной. Тема многострочных переменных не адресовано в приведенном ответе. Их решение работает, потому что переменная PATH не содержит символов новой строки. В моем случае оно работает только с первой строкой переменной, которая не является желаемым результатом.
Прочитайте man bash
, особенно часть о «Расширении параметров», и сделайте что-то вроде:
a="/a/b/c"
echo "$a"
b="${a%/*}"
echo "$b"
c="${b%/*}"
echo "$c"