Как удалить строку из начала каждой строки текста? [дубликат]

На этот вопрос уже есть ответ здесь:

Я беру содержимое каталога с помощью 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 не содержит символов новой строки. В моем случае оно работает только с первой строкой переменной, которая не является желаемым результатом.

0
задан 30 December 2017 в 00:54

1 ответ

Прочитайте man bash, особенно часть о «Расширении параметров», и сделайте что-то вроде:

a="/a/b/c"
echo "$a"
b="${a%/*}"
echo "$b"
c="${b%/*}"
echo "$c"
0
ответ дан 30 December 2017 в 00:54

Другие вопросы по тегам:

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