如果行以模式开头,则将字母替换为‘X’的外壳脚本

h6my8fg2  于 2022-10-17  发布在  Unix
关注(0)|答案(1)|浏览(195)

我在Unix box中的一个文件夹下有一个文件。我的文件将如下所示,其中行以‘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#
eiee3dmh

eiee3dmh1#

您可以使用分号将两个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#

$

相关问题