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

这有帮助吗?

相关内容