RegEx用于多行搜索并使用sed替换

时间:2019-04-13 15:58:06

标签: regex unix sed ksh

我需要有一个RegEx,可以在一行的中间找到一个@After public void tearDown(ITestResult result) throws IOException { if(result.getStatus()==ITestResult.FAILURE){ String temp = Utility.getScreenshot(driver); logger.fail(result.getThrowable().getMessage(), MediaEntityBuilder.createScreenCaptureFromPath(temp).build()); } 作为起点,之前的内容是随机的,并在15位数字和第二行的49个字母之后进行替换。我需要用空格替换所有内容,但是第二行需要与第一行合并。

尝试

\n

输入

sed -r -e '{N;s/\n[[:digit:]]{15}[[:space:]]{49}//}'

Screen shot of record

需要删除的是TRADE TR之后的换行符,并将ADE RelatedED放到TR中,使其拼写为TRADE。

所需的输出

QC HOH 0H0 CA
:70:NOFX TRADE TR
100000100200621                                                 ADE RELATED WOOD                                                                                         PURCHASE

2 个答案:

答案 0 :(得分:2)

这可能对您有用(GNU sed):

sed -E 'N;s/\n[[:digit:]]{15}[[:space:]]{49}//;P;D' file

这将打开一个两行窗口,并在替换命令匹配时修改其中的第二个窗口。它总是打印两行的第一行,然后将其删除。

答案 1 :(得分:1)

使用GNU sed:

Field week failed validation
Field day was missing
相关问题