sed 如何替换这一行的末尾?

sed 如何替换这一行的末尾?

我想[1-9] \\ \hline[1-9] & \\ \hline新的 & 符号替换该行的这一端。数据样本

The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  4 \\ \hline

我的伪代码,我被困在其中,为 制作一个占位符,为 制作一些占位符,为制作[1-9]一些占位符$1$2

sed "s/[1-9] \\\\\\\\ \\\hline/*$/TODO/"

预期输出:

The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  &4 \\ \hline

操作系统:Debian 8.5

答案1

您可以匹配一个或多个十进制数字,后跟可选的水平空格,然后&在替换测试中使用以在文字与符号之后重新替换它\&

$ echo 'The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  4 \\ \hline' |
   sed 's/[0-9]\{1,\}[ \t]*\\\\/\&&/'
The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  &4 \\ \hline

或者稍微更紧凑,使用扩展的正则表达式

$ echo 'The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  4 \\ \hline' |
   sed -E 's/[0-9]+\s*\\\\/\&&/'        
The lorem ... & 1-2 & 3-4 & 5-6 & 6000 & 10000  &4 \\ \hline

相关内容