“sed”让我头疼,所以我在这里发布这个问题。是的,它应该使用 sed 完成,在脚本中执行。
这个想法是修改一个由大约 30 行块组成的文本文件。每个以“StartLine”开头的块与下一个块之间由一个空行分隔(AD 搜索结果)。 在每个块中,我需要在“AlwaysExists”行之后添加“AddMe”行,但仅如果在此块中尚不存在包含“NoNoNo”的行。所以它的添加条件... 因此,应该有以下其中之一:
StartLine
AlwaysExists
NoNoNo <--- Not added "AddMe", because "NoNoNo" exists
<Emply line>
StartLine
AlwaysExists
AddMe <--- Added, because NoNoNo here not exists
<Emply line>
以下可能是一种工作方法,但我无法完成它,所以它有效:
sed -i '/StartLine/,/^$/{
<whatever is needed>
}' myfile.ldif
希望有人能帮忙。提前致谢。 克里斯
编辑:
sed '/StartLine/,/^$/{
/NoNoNo/!{
:loop
N
/NoNoNo/!{
$!b loop
a\
AddMe
}
}
}' /uploads/ldif.txt
...这只会在底部添加一次 AddMe...
不要使用范围。只要总有一个空行:
sed -n '
/StartLine/ {
:a
N
//!d
}
/NoNoNo/!s/AlwaysExists\n/&AddMe\n/
p
' inputfile