使用SED / AWK替换字符串

时间:2016-09-29 17:36:52

标签: bash perl awk sed sh

我想替换文件中的部分字符串,即将NFIN=4替换为W=4N。 请注意,在NFIN=4的数字部分,数字可以是任何int或float值;如果输入为NFIN=3.0,则输出应为W=3.0。 没有负数,它是3或3.0。 例如,输入行:

XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N NFIN=4 ODIND=5

应该成为输出:

XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N W=4N ODIND=5

2 个答案:

答案 0 :(得分:0)

您可以使用此sed命令匹配数字数据:

cat file
XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N NFIN=4 ODIND=5
XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N NFIN=FOO ODIND=5
XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N NFIN=4.0 ODIND=5

sed -E 's/NFIN=([0-9]+\.[0-9]+)/W=\1/g; s/NFIN=([0-9]+)/W=\1N/g' file
XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N W=4N ODIND=5
XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N NFIN=FOO ODIND=5
XMPparasitic2 VDD:F86 VDD:F87 VDD:F88 VNW pch_lvt_mac L=8N W=4.0 ODIND=5

答案 1 :(得分:-2)

sed -E 's/NFIN=([0-9]+(\.[0-9]+)?)/W=\1N/' file