.csvファイルbashの列のLinuxパスの解析

.csvファイルbashの列のLinuxパスの解析

次のように処理した.csvデータファイルがあります。

   -------------PATH AND FILE NAME--------,USER--,DATE-----,TIME---,STATUS
   /Proj/abc/app/app_pit/conf/HUB_TEST.apx,uJones,4/24/2018,5:55:58,OK
   /Proj/abc/app/app_pit/conf/test_acqit1.apx,uSmith,3/8/2018,10:16:41,OK
   /Proj/abc/app/app_pit/conf/test_bkfs.apx,uHarry,/26/2018,9:47:03,OK

ギイ! 「パスとファイル名」列を次のように分類してもらうというフィードバックと要求を受け取るまで:

    LB,-PROJ---,FILENAME----,USER--,DATE-----,TIME---,STATUS
    app,app_pit,HUB_TEST.apx,uJones,4/24/2018,5:55:58,OK
    app,app_pit,test_acqit1.apx,uSmith,3/8/2018,10:16:41,OK
    app,app_pit,test_bkfs.apx,uHarry,/26/2018,9:47:03,OK

すべてのレコードで「/Proj/abc」を省略し、パスから「conf」を削除します。

私はさまざまなawk、sed、trなどのアプリケーションを試してみましたが、これを実行できないようです。たぶんここで循環ロジックを使用する必要がありますか?

ベストアンサー1

ヘッダーを無視し、ファイルのテキストに行の先頭にスペースがないとします(あなたの質問にあるように)。

$ sed -e 's@/Proj/abc/\([^/]*\)/\([^/]*\)/conf/@\1,\2,@' file
-------------PATH AND FILE NAME--------,USER--,DATE-----,TIME---,STATUS
app,app_pit,HUB_TEST.apx,uJones,4/24/2018,5:55:58,OK
app,app_pit,test_acqit1.apx,uSmith,3/8/2018,10:16:41,OK
app,app_pit,test_bkfs.apx,uHarry,/26/2018,9:47:03,OK

このsedコマンドは、文字列(さまざまな可能性があると思います)をキャプチャし、パスappapp_pit最後のビットを独自のフィールドに保ちながら、元のデータのパスをカンマ区切りの文字列に置き換えます。

新しいファイルにリダイレクトし、必要に応じてヘッダーを変更します。

おすすめ記事