使用 sed 进行多行搜索和替换的 RegEx
RegEx for a multiple line search and replace using sed
我需要一个正则表达式,在一行的中间找到一个 \n
作为起点,之前的任何内容都是随机的,并在第二行的 15 位数字和 49 字母之后替换。我需要用空格替换所有这些,但第二行需要与第一行连接。
尝试
sed -r -e '{N;s/\n[[:digit:]]{15}[[:space:]]{49}//}'
输入
QC HOH 0H0 CA
:70:NOFX TRADE TR
100000100200621 ADE RELATED WOOD PURCHASE
需要删除的是 TRADE TR 之后的换行符,并将 ADE RELATED 带入 TR,使其拼写为 TRADE。
期望的输出
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
这会打开两行 window 并在替换命令匹配时修改其中的第二行。它总是打印两行中的第一行,然后将其删除。
使用 GNU sed:
$ sed -Ez 's/\n[[:digit:]]{15}[[:space:]]{49}//' file
QC J0B 2Y0 CA
:70:NOFX TRADE TRADE RELATED WOOD PURCHASE
我需要一个正则表达式,在一行的中间找到一个 \n
作为起点,之前的任何内容都是随机的,并在第二行的 15 位数字和 49 字母之后替换。我需要用空格替换所有这些,但第二行需要与第一行连接。
尝试
sed -r -e '{N;s/\n[[:digit:]]{15}[[:space:]]{49}//}'
输入
QC HOH 0H0 CA
:70:NOFX TRADE TR
100000100200621 ADE RELATED WOOD PURCHASE
需要删除的是 TRADE TR 之后的换行符,并将 ADE RELATED 带入 TR,使其拼写为 TRADE。
期望的输出
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
这会打开两行 window 并在替换命令匹配时修改其中的第二行。它总是打印两行中的第一行,然后将其删除。
使用 GNU sed:
$ sed -Ez 's/\n[[:digit:]]{15}[[:space:]]{49}//' file
QC J0B 2Y0 CA
:70:NOFX TRADE TRADE RELATED WOOD PURCHASE