awk / sed折线如何修复并移动一些线条

时间:2013-11-19 02:34:49

标签: sed awk

我有几行被破坏,我希望这些行被移动到前一行

我需要帮助才能修复此文件 来源:

    Path   : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\Ser
             vice_Legal 
    Access : BUILTIN\Administrators Allow  FullControl
             MLIDDOMAIN1\Domain Admins Allow  FullControl
             MLIDDOMAIN1\acl_corp_gs_legal Allow  Modify, Synchronize
    -----------------------
    Path   : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\balco 
    Access : Everyone Allow  FullControl
             Everyone Allow  268435456
    -----------------------
    Path   : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\BCDRP
             lanning 
    Access : Everyone Allow  FullControl
             Everyone Allow  268435456
    -----------------------

预期结果:

    Path   : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\Service_Legal 
    Access : BUILTIN\Administrators Allow  FullControl
    -----------------------
    Path   : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\balco 
    Access : Everyone Allow  FullControl
             Everyone Allow  268435456
    -----------------------
    Path   : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\BCDRPlanning 
    Access : Everyone Allow  FullControl
             Everyone Allow  268435456
    -----------------------

我只能运行awk "/Path/{a=1;next}/Access/{a=0}a"来查找哪些线路被破坏,但我不知道如何移动这些线路。

2 个答案:

答案 0 :(得分:1)

您希望暂停打印Path行,直到您看到下一行,如果下一行不是Access行,那么您要打印两条线在一起。

类似的东西:

/Path/ {
    a=$0
    next
}

a && !/Access/ {
    gsub(/^ */, "")
    printf "%s",a
    print
    a=""
    next
}

1

答案 1 :(得分:1)

sed '/^Path/{N;s/\n         //;}'