CSVファイルから行を削除する

CSVファイルから行を削除する

次のファイル共有パス、ユーザー名、および権限を含むcsvファイルがあります。

"FolderName";"ADGroupOrUser";"Permissions"
\\path\1 - folder 01\1 - folder2;   user.user;  Modify, Synchronize
\\path\1 - folder 01\1 - folder2;   user1.user1;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2;   user2.user2;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2\1 - folder3;   user.user;  Modify, Synchronize
\\path\1 - folder 01\1 - folder2\1 - folder3;   user1.user1;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2\1 - folder3;   user2.user2;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2\1 - folder3\folder4;   user.user;  Modify, Synchronize
\\path\1 - folder 01\1 - folder2\1 - folder3\folder4;   user1.user1;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2\1 - folder3\folder4;   user2.user2;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2\2 - folder1;   user.user;  Modify, Synchronize
\\path\1 - folder 01\1 - folder2\2 - folder1;   user1.user1;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2\2 - folder1;   user2.user2;    Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user.user;  Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user1.user1;    Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user2.user2;    Modify, Synchronize
...

最初の3行を見るとわかるように、フォルダパスは同じですが、ユーザーは異なります。

ネットワークパスの下に6行以下に別のフォルダがありますが、親フォルダから継承されるため、ユーザーと権限は同じです。

アイデアは、ファイルからこの6行を削除することです。権限が継承されると、それ以降のすべての項目が同じユーザーと権限を持つことになります。

\\path\1 - folder 01\1 - folder2\1 - folder3
\\path\1 - folder 01\1 - folder2\1 - folder3\folder4

この場合、最終結果は次のようになります。

"FolderName";"ADGroupOrUser";"Permissions"
\\path\1 - folder 01\1 - folder2;   user.user;  Modify, Synchronize
\\path\1 - folder 01\1 - folder2;   user1.user1;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2;   user2.user2;    Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user.user;  Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user1.user1;    Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user2.user2;    Modify, Synchronize

bash(MacOS)を使ってファイルを処理しています。

このような

grep -v "\\path\1 - folder 01\1 - folder2*"

パスにはより多くのフォルダがあります。

\\path\1 - folder 01\1 - folder2*

その後、削除

ベストアンサー1

$ { head -n 1; grep -E '^.{32};'; } < file
"FolderName";"ADGroupOrUser";"Permissions"
\\path\1 - folder 01\1 - folder2;   user.user;  Modify, Synchronize
\\path\1 - folder 01\1 - folder2;   user1.user1;    Modify, Synchronize
\\path\1 - folder 01\1 - folder2;   user2.user2;    Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user.user;  Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user1.user1;    Modify, Synchronize
\\path\2 - folder 01\1 - folder2;   user2.user2;    Modify, Synchronize

これが実際に必要なものではない場合は、より良い要件を提供するように質問を編集してください。

おすすめ記事