当某些文本匹配时,将每行中的数值替换为另一个值
replace the numerical value with another value in each line when some text is matched
我有一个大文件,如果某些文本在相应行上匹配,我想处理每一行上的数值。例如,如果我在一个大文本文件中有以下几行:
system.membus.respLayer1.occupancy 55000 # Layer occupancy (ticks)
system.membus.respLayer1.utilization 5.5 # Layer utilization (%)
system.l2.prefetcher.prefetcher.num_hwpf_identified 0 # number of hwpf identified
如果每行开头的文本匹配,我想用它的双倍值替换 55000
,用它的一半值替换 5.5
。这些值可能因文件不同而不同,即 55000
和 5.5
不固定。
任何人都可以帮助我如何使用 Python, sed, awk
,etc
来实现这一点
awk
救援!
$ awk '/occupancy/ {sub(,*2)}
/utilization/ {sub(,/2)}1' file
system.membus.respLayer1.occupancy 110000 # Layer occupancy (ticks)
system.membus.respLayer1.utilization 2.75 # Layer utilization (%)
system.l2.prefetcher.prefetcher.num_hwpf_identified 0 # number of hwpf identified
我有一个大文件,如果某些文本在相应行上匹配,我想处理每一行上的数值。例如,如果我在一个大文本文件中有以下几行:
system.membus.respLayer1.occupancy 55000 # Layer occupancy (ticks)
system.membus.respLayer1.utilization 5.5 # Layer utilization (%)
system.l2.prefetcher.prefetcher.num_hwpf_identified 0 # number of hwpf identified
如果每行开头的文本匹配,我想用它的双倍值替换 55000
,用它的一半值替换 5.5
。这些值可能因文件不同而不同,即 55000
和 5.5
不固定。
任何人都可以帮助我如何使用 Python, sed, awk
,etc
awk
救援!
$ awk '/occupancy/ {sub(,*2)}
/utilization/ {sub(,/2)}1' file
system.membus.respLayer1.occupancy 110000 # Layer occupancy (ticks)
system.membus.respLayer1.utilization 2.75 # Layer utilization (%)
system.l2.prefetcher.prefetcher.num_hwpf_identified 0 # number of hwpf identified