【发布时间】:2017-10-31 03:01:10
【问题描述】:
我有一个看起来像这样的文件,它是 windows 命令 icacls c:\path /t >output.txt
的结果 C:\temp\2\ok Everyone:(I)(RX)
BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Users:(I)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\ok.txt Everyone:(I)(RX)
BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Users:(I)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\ok1.txt Everyone:(I)(RX)
BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Users:(I)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\ok2.txt Everyone:(I)(RX)
BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Users:(I)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\test1.ps1 Everyone:(I)(RX)
BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Users:(I)(RX)
NT AUTHORITY\Authenticated Users:(I)(M)
我需要用它前面的行填充不完全为空的空白空间。好消息是空格始终是基于前一行的相同数量的字符。
期望的输出
C:\temp\2\ok Everyone:(I)(RX)
C:\temp\2\ok BUILTIN\Administrators:(I)(F)
C:\temp\2\ok NT AUTHORITY\SYSTEM:(I)(F)
C:\temp\2\ok BUILTIN\Users:(I)(RX)
C:\temp\2\ok NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\ok.txt Everyone:(I)(RX)
C:\temp\2\ok.txt BUILTIN\Administrators:(I)(F)
C:\temp\2\ok.txt NT AUTHORITY\SYSTEM:(I)(F)
C:\temp\2\ok.txt BUILTIN\Users:(I)(RX)
C:\temp\2\ok.txt NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\ok1.txt Everyone:(I)(RX)
C:\temp\2\ok1.txt BUILTIN\Administrators:(I)(F)
C:\temp\2\ok1.txt NT AUTHORITY\SYSTEM:(I)(F)
C:\temp\2\ok1.txt BUILTIN\Users:(I)(RX)
C:\temp\2\ok1.txt NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\ok2.txt Everyone:(I)(RX)
C:\temp\2\ok2.txt BUILTIN\Administrators:(I)(F)
C:\temp\2\ok2.txt NT AUTHORITY\SYSTEM:(I)(F)
C:\temp\2\ok2.txt BUILTIN\Users:(I)(RX)
C:\temp\2\ok2.txt NT AUTHORITY\Authenticated Users:(I)(M)
C:\temp\2\test1.ps1 Everyone:(I)(RX)
C:\temp\2\test1.ps1 BUILTIN\Administrators:(I)(F)
C:\temp\2\test1.ps1 NT AUTHORITY\SYSTEM:(I)(F)
C:\temp\2\test1.ps1 BUILTIN\Users:(I)(RX)
C:\temp\2\test1.ps1 NT AUTHORITY\Authenticated Users:(I)(M)
我尝试过这样的事情: 为了获得两个文件并将它们粘贴在一起,但问题是意外的空格总是搞乱顺序(我使用的是 Windows awk 和 sed,这就是我使用双引号的原因)
awk "{line=$2} {print NF?line:\"\"}" OUTPUT
awk "{line=$1} {print NF?line:\"\"}" OUTPUT
awk -F":" "{line=$2} {print NF?line:\"\"}" OUTPUT
awk -F":" "{line=$1} {print NF?line:\"\"}" OUTPUT
我会很感激任何其他想法
【问题讨论】:
-
文件中的“第一”行实际上是左对齐的,还是在它们之前有空格?
-
那些空格是误加的,其实是没有空格的
-
@Eduardo:你的起跑线总是有
Everyone:(I)(RX)吗? -
@batMan 恐怕不会,它会改变。第一部分也会改变,它会有像“c:\New Folder”这样的空格
-
@Eduardo:下一个问题,第一行中将替换
Everyone:(I)(RX)的字段可以有空格吗?