왼쪽에서 오른쪽으로 한 줄의 문자열 바꾸기

왼쪽에서 오른쪽으로 한 줄의 문자열 바꾸기

나는 원해요검색 및 바꾸기음수 값과 이전 값. 값은 쉼표로 구분됩니다.

예:

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");
}

관련 정보