【问题标题】:Shell script to replace alphabets to 'X' if line starts with a pattern如果行以模式开头,Shell 脚本将字母替换为 \'X\'
【发布时间】:2022-09-23 03:41:58
【问题描述】:

我在 Unix 框的文件夹下有一个文件。我的文件将如下所示,无论行以 \'LIN\' 、 \'RFF\'、 \'NAD\' 开头,这些行的字母和数字都将被屏蔽为 \'X\' 和 \'0\ ' 分别排除\'LIN\'、\'RFF\'、\'NAD\'。

到目前为止,我已经尝试过使用以下命令,就像每个字母一个命令一样,想要制作将在一次运行中屏蔽这些行的脚本。

$ sed \'/^LIN/s/A/X/\'

示例文件:-

#Header#  
line1:string::strings:  
line2:asdasd:asd:aD:  
line3:asda:asda  
....  
....  
LIN:asdas:SDFGH:1223:asf  
....  
NAD:asdas123:23:  
....
....  
RFF:asda:asd123:asd  
....  
Nlines:asda:asdad:asdas  
#Footer#



    标签: shell unix sed


    【解决方案1】:

    您可以使用分号将 2 个 sed 命令合并为一个。在以 LIN 或 NAD 或 RFF 开头的行上,搜索字母字符并替换为 X,但从第 4 个字符开始,保留前导字符。然后,搜索数字并替换为 0。

    $ sed '/^\(LIN\|NAD\|RFF\):/s/[[:alpha:]]/X/4g;s/[[:digit:]]/0/g' file.txt
    #Header#
    line0:string::strings:
    line0:asdasd:asd:aD:
    line0:asda:asda
    ....
    ....
    LIN:XXXXX:XXXXX:0000:XXX
    ....
    NAD:XXXXX000:00:
    ....
    ....
    RFF:XXXX:XXX000:XXX
    ....
    Nlines:asda:asdad:asdas
    #Footer#
    $
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2021-07-21
      • 2012-11-05
      • 1970-01-01
      • 2020-02-14
      相关资源
      最近更新 更多