2016-03-21 7 views
0

ich für ein Perl/awk/sed Befehl Autoinkrement die Zahlen Zeile in der Datei suchen speichern, P1.tcl:ein Wort finden und die Nummer im Wort erhöhen und in neue Dateien

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 

Ich möchte P1 von P2 zu P500 ändern und in neue Dateien wie P2.tcl, P3.tcl speichern .... P500.tcl

Ich suchte dieses im Netz, aber fand nur Möglichkeit zu ersetzen/zu erzeugen eine Datei. wie P2.tcl

Best,

Jaeyoung

+1

Verwenden Sie eine Variable und einen Loop – fedorqui

Antwort

1

Ungeprüfte:

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

Beachten Sie, dass die Erweiterung von Bereichsträgern von Bash 3+ und ksh unterstützt wird, nicht alle Shells. – SLePort

1

awk ist weniger klar, aber für solche langen Schleifen schneller:

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

mit gensub zu Ersetzen Sie P1 durch "P" n.