如何在 Linux 中用 Sed 替换块文本?

问题描述 投票:0回答:2

我有一个文件想要

  • 用一些空格替换一部分
  • 剪切到特定位置

用图更容易理解:

我尝试过但没有成功:

sed -e "s/\(.*\)161$/ /" $FICSUP$EXTMOD

数据:

CRE                           M                    0123456                                                         01/01/2016                         ZDCP                    H125,45                                                                                                                                                       
CRE                           M                    0123456                                                         01/01/2016                         ZDRTT                   H170                                                                                                                                                          
CRE                           M                    0123456                                                         01/01/2016                         ZDRTTN-1                H130                                                                                                                                                          
CRE                           M                    0123456                                                         01/01/2016                         ZDCPA                   H200                                                                                                                                                          
CRE                           M                    0123457                                                         01/01/2016                         ZDCP                    H124,45                                                                                                                                                       
linux sed
2个回答
1
投票

假设您想要:

  1. 删除字段末尾最后一个字段中的所有数字和逗号(空格之前)
  2. 将末尾定长字段中的空格截断为更小的定长空格

使用您的数据作为此处的输入就是结果的样子 删除正则表达式中的“.”,并添加所需的空格数。 我用过 ”。”使空白可见。

$ cat data | sed -r "s/[0-9,]* *$/..................../"
CRE                           M                    0123456                                                         01/01/2016                         ZDCP                    H....................
CRE                           M                    0123456                                                         01/01/2016                         ZDRTT                   H....................
CRE                           M                    0123456                                                         01/01/2016                         ZDRTTN-1                H....................
CRE                           M                    0123456                                                         01/01/2016                         ZDCPA                   H....................
CRE                           M                    0123457                                                         01/01/2016                         ZDCP                    H....................

1
投票

这应该可以解决问题:

sed "s/[0-9]\+[,]*[0-9]*$/         /g" your_file.txt

这会将行末尾的每个数字(包括逗号)替换为 8 个空格。

© www.soinside.com 2019 - 2024. All rights reserved.