Необходимо извлечь имя файла из пути к каталогу, зациклив файл данных

Необходимо извлечь имя файла из пути к каталогу, зациклив файл данных

У меня есть следующий файл данных.

recID#  Attachment#            Attachment#2.          ...... Attachment #15 
101      c:/a/b/c/d/fil1.txt    c:/a/b/c/d/e/aaa.txt   ...... c:/a/b/c/d/e/fff.txt        
103      c:/a/b/c/d/abc.txt     c:/a/b/c/d/e/bbb.txt   ...... c:/a/b/c/d/e/ggg.txt   
104      c:/a/b/c/d/e/efg.txt   c:/a/b/c/d/e/ccc.txt   ...... c:/a/b/c/d/e/hhh.txt   
105      c:/a/b/c/mnop.txt      c:/a/b/c/d/e/ddd.txt   ...... c:/a/b/c/d/e/iii.txt 

Я хочу захватить только имя файла, а не весь каталог. Ниже ожидаемый вывод.

rec ID#  Attachment1#         ttachment#2 ...... Attachment #15
101         fil1.txt            aaa.txt     ...... fff.txt      
103         abc.txt             bbb.txt     ...... ggg.txt  
104         efg.txt             ccc.txt     ...... hhh.txt  
105         mnop.txt            ddd.txt     ...... iii.txt  

Также я хочу сравнить каждый файл в локальном каталоге c:\a\b\c с доступностью или отсутствием. Если он доступен, я хочу создать каталог /Test и переместить все файлы, которые доступны в этом каталоге.

например: столбец Attachment1 имя файла fil1.txt, если он доступен в каталоге "c:\a\b\c", то я хочу скопировать файл из каталога "c:\a\b\c" в "c:\a\b\d".

Спасибо

решение1

Чтобы удалить часть каталога из всех имен файлов, можно использовать

sed 's#[^ \t]*/##g' inputfile > outputfile

или

awk '{gsub(/[^ \t]*\//,"",$0);print}' inputfile > outputfile

Из входного файла примера в вопросе я получаю этот вывод

recID#  Attachment#            Attachment#2.          ...... Attachment #15 
101      fil1.txt    aaa.txt   ...... fff.txt        
103      abc.txt     bbb.txt   ...... ggg.txt   
104      efg.txt   ccc.txt   ...... hhh.txt   
105      mnop.txt      ddd.txt   ...... iii.txt 

Если форматирование вывода имеет значение, пожалуйста, укажите в вопросе, какие у вас требования.

Поскольку из вопроса не ясно, как связаны с входным файлом каталоги, в которых нужно проверять наличие файлов или куда перемещать файлы, я не могу ответить на другую часть вопроса.

Редактировать:

В случае, если реальный ввод содержит обратные косые черты ( \) вместо прямых косых черт ( /), следующие измененные команды используют [/\\]вместо /или \/, чтобы они работали с обоими вариантами ввода:

sed 's#[^ \t]*[/\\]##g' inputfile > outputfile
awk '{gsub(/[^ \t]*[/\\]/,"",$0);print}' inputfile > outputfile

Связанный контент