仅当某行以特定字

时间:2017-09-27 00:43:26

标签: awk sed match

我有一个文本文件。我想仅在线路以.subckt开头时才移除VDD,VDDG,VSS。因为其他线路也有VDD,VDDG,VSS

我知道一个简单的SED命令来替换匹配的单词,如下所示,但在这种情况下,我只想删除一行以.subckt开头。请提供任何反馈。这对我很有帮助。先感谢您。

sed's / VDD / /'test.txt

的test.txt:

.subckt AO22X2_RVT A1 A2 A3 A4 VDD VSS Y
MN1 net2 A2 VSS VSS n105 w=0.28u l=0.03u nf=1.0 m=1
MN3 net4 A4 VSS VSS n105 w=0.28u l=0.03u nf=1.0 m=1
MN5 Y net3 VSS VSS n105 w=0.42u l=0.03u nf=1 m=2
MN4 net3 A3 net4 VSS n105 w=0.28u l=0.03u nf=1.0 m=1
MN2 net3 A1 net2 VSS n105 w=0.28u l=0.03u nf=1.0 m=1
MP4 net3 A3 net1 VDD p105 w=0.54u l=0.03u nf=1.0 m=1
MP1 net1 A2 VDD VDD p105 w=0.54u l=0.03u nf=1.0 m=1
MP2 net1 A1 VDD VDD p105 w=0.54u l=0.03u nf=1.0 m=1
MP5 Y net3 VDD VDD p105 w=0.8u l=0.03u nf=1 m=2
MP3 net3 A4 net1 VDD p105 w=0.54u l=0.03u nf=1.0 m=1
.ends AO22X2_RVT
.subckt AOINVX4_RVT A VDD VDDG VSS Y
MN0 Y A VSS VSS n105 w=0.31u l=0.03u nf=1 m=4
MP0 Y A VDDG VDDG p105 w=0.80u l=0.03u nf=1 m=4
.ends AOINVX4_RVT
.
.
.

2 个答案:

答案 0 :(得分:2)

这是awk解决方案,

awk '/^\.subckt/{gsub(/VDD|VDDG|VSS/,"")}1' file

答案 1 :(得分:0)

我想出的是:

sed '/^\.subckt/ {s/VDD//; s/VDDG//; s/VSS//; }'