나는 원해요검색 및 바꾸기음수 값과 이전 값. 값은 쉼표로 구분됩니다.
예:
ocv_sigma_cell_rise(table_7) {
sigma_type : early_and_late;
values("0.00616, 0.00505, 0.00337, -0.00026");
}
여기서 음수 값 "-0.00026"을 이전 값(여기에서는 "0.00337")으로 바꿔야 합니다.
음수 값은 "ocv"를 일반 단어로 사용하여 파일에서 검색해야 합니다.
答え1
이 제한된 ocv .lib 파일의 경우 이 작은 Perl 코드를 실행할 수 있습니다.
perl -lne '
BEGIN {
$arc = qr/ocv_sigma_cell_(rise|fall)\([^)]*\)\s*\{/;
$num = qr/\d+(?:\.\d*)?|\.\d+/;
}
next unless /$arc/ ... /\}/;
push @A,$_;next unless /\}/;
my $var = join "\n", splice @A;
$var =~
s{^\s*values\(\K(.*?)(?=\))}
[
local $_ = $1;
1 while s/(?:"|\s)($num),\s+\K-$num(?=,|")/$1/;
$_;
]xmse;
print $var;
' your_ocv.lib
산출:
ocv_sigma_cell_rise(table_7) {
sigma_type : early_and_late;
values("0.00616, 0.00505, 0.00337, 0.00337");
}