Я хотел бы удалить имя файла только из следующего файла конфигурации.Как удалить имя файла из списка пути в оболочке
Файл конфигурации - test.conf
knowledgebase/arun/test.rf
knowledgebase/arunraj/tester/test.drl
knowledgebase/arunraj2/arun/test/tester.drl
выше файл должен быть прочитан. И удаленное содержимое должно отправиться в другой файл с именем output.txt
Ниже приведены мои попытки. Это не работает ко мне. Я получаю только пустые файлы.
#!/bin/bash
file=test.conf
while IFS= read -r line
do
# grep --exclude=*.drl line
# awk 'BEGIN {getline line ; gsub("*.drl","", line) ; print line}'
# awk '{ gsub("/",".drl",$NF); print line }' arun.conf
# awk 'NF{NF--};1' line arun.conf
echo $line | rev | cut -d'/' -f 1 | rev >> output.txt
done < "$file"
Ожидаемый результат:
knowledgebase/arun
knowledgebase/arunraj/tester
knowledgebase/arunraj2/arun/test
Ed Мортона будет применяться здесь. «Если вы используете цикл оболочки для обработки текстового файла, вы делаете это неправильно». – tripleee
Вот почему я включил опцию 'sed' - это, или Perl или Python, то, что я использовал бы для данной задачи. Это зависит от того, есть ли что-нибудь еще в цикле. По моему опыту, вам часто требуется «sort -u» для удаления дубликатов каталогов из списка каталогов. Однако это легко обрабатывается в любом из скриптов. Конвейер с 4 командами на имя файла ужасен по сравнению с любым из этих решений. –