데이터 파일을 반복하여 디렉터리 경로에서 파일 이름을 캡처해야 합니다.

데이터 파일을 반복하여 디렉터리 경로에서 파일 이름을 캡처해야 합니다.

다음 데이터 파일이 있습니다.

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 디렉토리를 생성하고 해당 디렉토리에서 사용 가능한 모든 파일을 이동하고 싶습니다.

예: 첨부 파일 1 열의 파일 이름은 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

관련 정보