Nano Hash - криптовалюты, майнинг, программирование

Нужна помощь в разделении имени файла и пути к папке с помощью сценария оболочки

Я новичок в написании сценариев оболочки. Мне нужно разделить эту следующую файловую структуру как отдельное имя файла и отдельный путь к папке. В имени файла мне не нужен _ABF1_6, так как он не является частью имени файла. Также этот _ABF1_6 меняется от пути к файлу и не является одинаковым для всех путей к файлам. Так что это нужно рассматривать как регулярное выражение... начиная с _ABF1. Пожалуйста помоги!!

Пример пути к файлу:

/EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 

Требуемый результат:

Folder path: /EBF/DirectiveFiles/ 
Filename: data_report_PD_import_script 
20.10.2013

  • С какой стати вы изменили путь к каталогу и изменили _rev1_6 на _ABF1_6 в своем образце ввода после того, как опубликовали вопрос и получили ответы? Это не имеет значения для вашего вопроса, но теперь людям становится труднее понять различия между ответами. 21.10.2013

Ответы:


1

Для этого в Linux есть специальные утилиты basename и dirname:

$ basename /EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6
data_report_PD_import_script_ABF1_6
$ dirname /EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6
/EBF/DirectiveFiles
20.10.2013
  • Это потрясающе. Спасибо! 24.07.2014

  • 2

    В UNIX нет «папок», есть «каталоги».

    $ cat file
    /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/data_report_PD_import_script_rev1_46
    $ gawk '{print gensub(/(.*\/)(.*)_rev1.*/,"Directory: \\1\nFilename: \\2","")}' file
    Directory: /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/
    Filename: data_report_PD_import_script
    
    16 $ sed -r 's/(.*\/)(.*)_rev1.*/Directory: \1\nFilename: \2/' file Directory: /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/ Filename: data_report_PD_import_script

    или с помощью GNU awk (для gensub()), если хотите:

    $ gawk '{print gensub(/(.*\/)(.*)_rev1.*/,"Directory: \\1\nFilename: \\2","")}' file
    Directory: /ECMS/EDEV/ClassicClient/Forms/DirectiveFiles/
    Filename: data_report_PD_import_script
    
    20.10.2013

    3

    Для этого вы можете использовать расширение параметра оболочки. :

    user> p=/EBF/DirectiveFiles/data_report_PD_import_script_ABF1_6 
    user> echo ${p%/*}
    /EBF/DirectiveFiles
    user> f=${p##/}
    user> echo ${f%_ABF1}
    data_report_PD_import_script
    

    [Здесь][1] — ссылка на bash документацию по этому вопросу.

    Или с read и GNU sed (не такой портативный, как выше):

    read dir file < <(sed -r 's:(.*)/(.*)_ABF1.*:"\1" "\2":' <<<"$p")
    echo $dir $file
    

    Выход:

    "/EBF/DirectiveFiles" "data_report_PD_import_script"
    
    20.10.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..