【发布时间】:2015-10-07 12:06:34
【问题描述】:
我对 RegExp 和 sed 有点生疏(Mac 的版本与 GNU 的差异对我的尝试没有帮助),经过相当多的尝试 [几个小时],我还没有设法完成解析像这样输入:
16:32:07.961689 stat64 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth 0.000007 JavaApplicationS.65394
16:32:07.961742 stat64 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols 0.000006 JavaApplicationS.65394
16:32:07.961764 stat64 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication 0.000007 JavaApplicationS.65394
16:32:07.961785 stat64 /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication 0.000007 JavaApplicationS.65394
16:32:07.961830 stat64 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore 0.000008 JavaApplicationS.65394
16:32:07.962321 open F=3 (RW____) /dev/dtracehelper 0.000061 JavaApplicationS.65394
16:32:07.968239 stat64 [ 2] /AppleInternal>>>>>>>>>>
并且只提取路径。请注意,列数会有所不同,我想我想要的是附加到 / 字符的任何内容,并且被空格包围。此外,有时同一行会出现多条路径,例如
16:32:06.706726 WrData[A] D=0x13589148 B=0x100000 /dev/disk0s2 /private/var/folders/92/663yx9fn2036kz6pb3kr8z0r0000gp/0/com.apple.LaunchServices-107502.csstore~
在这些情况下,两者都很棒:同时输出 /dev/disk0s2 和 /private.. 或 只是 /private.. 也可以。
所以,基本上所有的文件都被写入或读取,正如 Mac OS X fs_usage 工具所报告的那样。该解决方案不必基于 sed,我也可以为此编写一些代码,但在此之前,我只想知道是否有“更简单”的方法。
谢谢!
【问题讨论】:
-
erm,对不起,如果这应该是超级用户,我确实在 stackoverflow 上找到了类似的帖子,我找不到任何关于哪个网站适合的信息
-
grep -o '/[^ ]*'之类的东西可能对你有用。 -
也许这可以帮助
sudo fs_usage | tr -s ' ' | cut -d' ' -f3 -
@microspino:NOze,因为列数不同,即某些列有时没有价值,这意味着我会打印出我期望的东西。然后可能会使用该输出的输出来允许进一步处理文件......但仍然不是解决方案,感谢您的贡献
-
@EtanReisner:谢谢伙计,我不知道 grep 可以做到这一点。它有效,仅针对某些文件具有 > 字符的细节,因此 I'L'I 的解决方案更完整。