繁体   English   中英

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

[英]RegEx for a multiple line search and replace using sed

我需要一个RegEx,它在行的中间找到一个\\n作为起始点,之前的任何内容都是随机的,并在第二行的15位和49 alpha之后替换。 我需要用空格替换所有这些,但第二行需要与第一行连接。

尝试

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

输入

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

屏幕截图的记录

需要删除的是交易TR之后的换行并将ADE RELATED带到TR以便它拼写交易。

期望的输出

QC H0H 0H0 CA
:70:NOFX TRADE TRADE RELATED WOOD                                                                                         PURCHASE

这可能适合你(GNU sed):

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

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

使用GNU sed:

$ sed -Ez 's/\n[[:digit:]]{15}[[:space:]]{49}//' file
QC J0B 2Y0 CA
:70:NOFX TRADE TRADE RELATED WOOD                                                                                         PURCHASE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM