У меня есть следующий файл данных.
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