sed: 마지막 백슬래시와 쉼표 사이의 모든 데이터를 가져와 교체합니다.

sed: 마지막 백슬래시와 쉼표 사이의 모든 데이터를 가져와 교체합니다.

아래와 같이 csv 형식의 데이터가 있습니다.

F1309-042543,07/14/09 01:39:25,N/A,C:\windows\system32\netsh.exe,N/A,True
F1309-042543,11/21/10 03:24:02,N/A,C:\Windows\System32\networkexplorer.dll,N/A,False
F1309-042543,07/14/09 01:38:53,N/A,C:\windows\system32\scrnsave.scr,N/A,True
F1309-042543,11/21/10 03:25:10,N/A,C:\windows\SYSTEM32\WISPTIS.EXE,N/A,True
F1309-042543,05/03/14 22:05:42,N/A,C:\windows\ccmcache\4t\SafeNet High Assurance Client (x64) 2.12.009.exe,N/A,True

네 번째 필드(Windows 경로)로 이동하여 프로세스 이름(마지막 "\" 문자, 다음 쉼표까지)을 가져온 다음 해당 프로세스 이름을 쉼표로 구분하여 자체 필드로 추가하려면 어떻게 해야 합니까? 최종 결과는 다음과 같습니다.

F1309-042543,07/14/09 01:39:25,N/A,C:\windows\system32\netsh.exe,netsh.exe,N/A,True
F1309-042543,11/21/10 03:24:02,N/A,C:\Windows\System32\networkexplorer.dll,networkexplorer.dll,N/A,False
F1309-042543,07/14/09 01:38:53,N/A,C:\windows\system32\scrnsave.scr,scrnsave.scr,N/A,True
F1309-042543,11/21/10 03:25:10,N/A,C:\windows\SYSTEM32\WISPTIS.EXE,WISPTIS.EXE,N/A,True
F1309-042543,05/03/14 22:05:42,N/A,C:\windows\ccmcache\4t\SafeNet High Assurance Client (x64) 2.12.exe,SafeNet High Assurance Client (x64) 2.12.exe,N/A,True

즉, Windows 경로에서 프로세스 이름을 가져와 CSV에서 자체 필드로 만들고 싶습니다. 나는 sed가 이 작업을 수행하는 도구라고 생각하지만 어떻게 하는지는 잘 모르겠습니다. 매우 감사합니다.

답변1

그리고 sed:

sed 's/.*\\\([^,]*,\)/&\1/' file

산출:

F1309-042543,07/14/09 01:39:25,N/A,C:\windows\system32\netsh.exe,netsh.exe,N/A,True
F1309-042543,11/21/10 03:24:02,N/A,C:\Windows\System32\networkexplorer.dll,networkexplorer.dll,N/A,False
F1309-042543,07/14/09 01:38:53,N/A,C:\windows\system32\scrnsave.scr,scrnsave.scr,N/A,True
F1309-042543,11/21/10 03:25:10,N/A,C:\windows\SYSTEM32\WISPTIS.EXE,WISPTIS.EXE,N/A,True
F1309-042543,05/03/14 22:05:42,N/A,C:\windows\ccmcache\4t\SafeNet High Assurance Client (x64) 2.12.009.exe,SafeNet High Assurance Client (x64) 2.12.009.exe,N/A,True

참고로 원본 파일에는 ^M없습니다 .\n

답변2

예상 결과가 파일 내용과 동일해 보이기 때문에 100% 명확하지는 않지만 시도해 보겠습니다.

이 목록에 파일 이름만 원하는 경우:

cat thebigfile.csv | rev | cut -d'\' -f1 | rev | cut -d',' -f1 

결과는 다음과 같습니다:

netsh.exe
networkexplorer.dll
scrnsave.scr
WISPTIS.EXE
SafeNet High Assurance Client (x64) 2.12.exe

이것이 도움이 됩니까?

관련 정보