Awk 找到一个单词并在单词&;中增加数字;保存到新文件中

Awk 找到一个单词并在单词&;中增加数字;保存到新文件中,awk,sed,numbers,increment,Awk,Sed,Numbers,Increment,我正在寻找一个perl/awk/sed命令来自动增加文件P1.tcl中的数字行: run_build_model sparc_ifu_dec run_drc set_faults -model path_delay -atpg_effectiveness -fault_coverage add_delay_paths P1 set_atpg -abort_limit 1000 run_atpg -ndetects 1000 我想将P1从P2更改为P500,并保存到新文件中,如P2.tcl、P3

我正在寻找一个perl/awk/sed命令来自动增加文件P1.tcl中的数字行:

run_build_model sparc_ifu_dec
run_drc
set_faults -model path_delay -atpg_effectiveness -fault_coverage
add_delay_paths P1
set_atpg -abort_limit 1000
run_atpg -ndetects 1000
我想将P1从P2更改为P500,并保存到新文件中,如P2.tcl、P3.tcl。。。。P500.tcl

我在网上搜索了这个,但找到了替换/生成一个文件的唯一方法。比如P2.tcl

最好的

Jaeyoung未经测试:

for i in {2..500}; do
    cp P1.tcl P$i.tcl
    sed -i s/P1/P$i/ P$i.tcl
done
未经测试:

for i in {2..500}; do
    cp P1.tcl P$i.tcl
    sed -i s/P1/P$i/ P$i.tcl
done

awk
不太清晰,但对于这样长的循环速度更快:

awk '{for (n=2; n<=500; n++) {line = gensub(/P1/, "P" n, "g", $0); print line > "P" n ".tcl"}}' P1.tcl
awk'{for(n=2;n“P”n.tcl”}'P1.tcl

使用
gensub
P1
替换为
“p”n

awk
对于这样长的循环来说,不太清晰,但速度更快:

awk '{for (n=2; n<=500; n++) {line = gensub(/P1/, "P" n, "g", $0); print line > "P" n ".tcl"}}' P1.tcl
awk'{for(n=2;n“P”n.tcl”}'P1.tcl

使用
gensub
P1
替换为
“p”n

使用var和loop使用var和loop注意范围大括号扩展受Bash 3+和ksh支持,而不是所有shell。注意范围大括号扩展受Bash 3+和ksh支持,而不是所有shell支持。