【发布时间】:2017-02-08 03:45:27
【问题描述】:
我想替换文件中的部分字符串,即将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
【问题讨论】:
-
如果您的意思不是带有负指数的负数,请适当更新问题。
-
sed -E -inplace 's/\bNFIN=([[:digit:]]+)\b/W=\1N/' PREICG_X1M_AH360TL_C8_ARCH_3_4.lpeSpc
-
这很重要,因为它使数字匹配正则表达式变得更加复杂,但基础是相同的。 NFIN 条目能否出现在行首(不太可能)或行尾?如果它总是在一条线的中间,那也会让生活更轻松。如果数字始终有效(例如,从来没有像
NFIN=Aleph-Null这样的条目不应该更改),那么它是NFIN=之后的数字这一事实在很大程度上变得无关紧要。玩正则表达式是一门艺术。你想要一些足够灵活的东西来做你想做的事,而不会做太多或太少。了解您的数据! -
NFIN=NFIN会发生什么? -
Nope NFIN=5N 只会出现在任何特定行的第 7 或第 8 位。