awk/sed折线如何固定和移动一些线
我有几行是断开的,我想把这些行移到前一行 我需要帮助来修复此文件文本 资料来源: 预期结果:awk/sed折线如何固定和移动一些线,sed,awk,Sed,Awk,我有几行是断开的,我想把这些行移到前一行 我需要帮助来修复此文件文本 资料来源: 预期结果: Path : Microsoft.PowerShell.Core\FileSystem::\\eiesc1\Service_Legal Access : BUILTIN\Administrators Allow FullControl ----------------------- Path : Microsoft.PowerShell.Core\FileSy
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“
来查找哪些行是断开的,但我不知道如何向上移动这些行 您想推迟打印路径
行,直到看到下一行,如果下一行不是访问
行,那么您想同时打印这两行
比如:
/Path/ {
a=$0
next
}
a && !/Access/ {
gsub(/^ */, "")
printf "%s",a
print
a=""
next
}
1
如果路径跨越多条线,这是否有效?从这个问题上看,这并不明确,但看起来这是可能的……不是书面的。你可以通过继续积累到一个想法中来实现这一点,只有当你看到Access时才打印。奇怪的是,当我尝试这个方法时,我发现了两个问题。首先,
Path
似乎不在字符串的开头(在示例文件中,前面有空白);这在两行之间留下了一些空间。这两种情况都可能是由复制/粘贴操作中引入的不需要的空格引起的。你将如何修改它以处理每行的前导空格?我将把答案保留为“variable”。那能做到吗?像[]+
这样的简单方法代替固定的空格串似乎不起作用…@Floris:sed'/^*Path/{N;/^*Access/!s/\N*/;}'
I gets:event not found
。。。我用\”修复了它!s
;但是现在“未中断”的路径线与它后面的访问线连接起来。这是我的sed
?(Mac OS 10.7.5)@Floris:我不确定。我所能建议的就是研究这个命令,理解它为什么应该工作,然后尝试使用更简单的命令,直到找到问题的根源。
/Path/ {
a=$0
next
}
a && !/Access/ {
gsub(/^ */, "")
printf "%s",a
print
a=""
next
}
1
sed '/^Path/{N;s/\n //;}'