Regex 使所有行不以'结尾;RPM&x27;在sed中

Regex 使所有行不以'结尾;RPM&x27;在sed中,regex,sed,Regex,Sed,我想在这些行后面附加以下行。如果你有什么好的建议,请告诉我。非常感谢 我试过了 sed -e '/?!(rpms$)/{N;s/\n//}' filename 但失败了 如果我正确理解了这个问题(胡乱猜测),您希望删除/删除所有结尾有RPM的行。然后只匹配(rpms$)并使用delete命令/…/d sed -e '/rpms$/d' filename 我认为您正在寻找将不以RPM结尾的行放在一行: sed -e ':a;/rpms$/!{N;s/\n//;ba}' 您可以使用否定运算符来

我想在这些行后面附加以下行。如果你有什么好的建议,请告诉我。非常感谢

我试过了

sed -e '/?!(rpms$)/{N;s/\n//}' filename

但失败了

如果我正确理解了这个问题(胡乱猜测),您希望删除/删除所有结尾有
RPM
的行。然后只匹配(
rpms$
)并使用delete命令
/…/d

sed -e '/rpms$/d' filename

我认为您正在寻找将不以RPM结尾的行放在一行:

sed -e ':a;/rpms$/!{N;s/\n//;ba}'
您可以使用否定运算符
来否定测试本身,而不是尝试否定模式在模式之后

为了处理末尾有两行以上没有RPM的情况,我将标签
:a
和无条件跳转
ba
添加到此标签。

这可能适用于您(GNU-sed):


将两行读入模式空间,如果第一行以
rpm
结尾,则删除以下换行符并重复。否则,请打印第一行,然后将其删除,并附加下一行,然后重复。

编辑您的问题,使其包含简明、可测试的样本输入和预期输出,我们可以开始帮助您。感谢您的友好帮助。我试过了,但结果与预期不一样。完美且易于理解。谢谢。
sed ':a;N;s/rpm\n/rpm/;ta;P;D' file