ディレクトリパスのファイル名のみをキャプチャする[閉じる]

ディレクトリパスのファイル名のみをキャプチャする[閉じる]

必要

Col1 ,  Col2             ,         Col3         ,   Col4
1   , a:/b/c/abc.txt          , f:/b/c/abc1.txt , a:/b/c/abc6.txt 
2   , b:/bd/a/s/3/d/mon.dat   , g:/b/c/abc 2.txt, b:/b/c/ab7.txt 
3   , c:/j/h/4/u/y/d/m/ttt.dat, h:/b/c/abc 3.txt, c:/b/c/abc 8.txt 
4   , c:/j/h/4/test1.msg      , i:/b/c/abc4.txt , d:/b/c/abc 9.txt
5   , d:/iasa/dda/dia/yyy.dat , j:/b/c/abc5.txt , e:/b/c/abc 10.txt

O/Pが期待される

Col1  ,    Col2     ,    Col3    ,   Col4                      
1  ,       abc.txt   ,   abc1.txt ,  abc6.txt
2  ,       mon.dat   ,   abc2.txt  , abc7.txt
3  ,       ttt.dat   ,   abc3.txt  , abc8.txt
4  ,       test1.msg ,   abc4.txt  , abc9.txt
5  ,       yyy.dat   ,   abc5.txt  , abc10.txt

答え1

空間分布ではどんな体系も推測できないので、どんな形式で推測しただけです。お好みに合わせて自由に調整してください。

awk -F, '{gsub (/ |\r/, ""); printf "%-4s ", $1; for (i=2; i<=NF; i++) {n=split($i, T, "/"); printf ", %-10s ", T[n]} printf RS}' OFS=, file
Col1 , Col2       , Col3       , Col4       
1    , abc.txt    , abc1.txt   , abc6.txt   
2    , mon.dat    , abc2.txt   , ab7.txt    
3    , ttt.dat    , abc3.txt   , abc8.txt   
4    , test1.msg  , abc4.txt   , abc9.txt   
5    , yyy.dat    , abc5.txt   , abc10.txt  

答え2

使用sedcolumn:

$ sed 's/ //g; s/,[^,]*\//,/g; s/,/ , /g' file | column -t
Col1  ,  Col2       ,  Col3      ,  Col4
1     ,  abc.txt    ,  abc1.txt  ,  abc6.txt
2     ,  mon.dat    ,  abc2.txt  ,  ab7.txt
3     ,  ttt.dat    ,  abc3.txt  ,  abc8.txt
4     ,  test1.msg  ,  abc4.txt  ,  abc9.txt
5     ,  yyy.dat    ,  abc5.txt  ,  abc10.txt
  • すべての空白文字を空の文字列に置き換える
  • ,次のすべての非文字を次の,ように置き換えます。/,
  • すべて,次へ交換,
  • テーブルにきれいな印刷出力column

関連情報