如何用另一个文件中的内容替换引号之间的文本?

如何用另一个文件中的内容替换引号之间的文本?

我有以下类型的文本:

$OU = 'or';
$DINHEIRO_CAIXA = 'Cash balance';
$PAGINA = 'Page';
$DE = 'from';
$ENVIAR = 'Send';
$PRINCIPAL = 'Main';

我已经使用单引号内的所有文本

cat arquivo | grep -oP "'[^']+'" | tr -d "'"

然后将此提取的文本翻译成葡萄牙语,但现在我不知道如何用翻译后的文本替换单引号之间的原始文本,我正在寻找类似的内容

$OU = 'ou';
$DINHEIRO_CAIXA = 'Dinheiro em caixa';
$PAGINA = 'Pagina';
$DE = 'de';
$ENVIAR = 'enviar';
$PRINCIPAL = 'Principal';

我尝试使用grep -F替换文件本身,但它失败了,因为模式不匹配,因为我在新文件上没有引号,有没有办法做到这一点?

答案1

使用awk

awk -F\' '
    { getline translate_text <"trans_file";
      print $1, translate_text, $3;
    }' OFS=\' original_file

original_file是你的原始文件;trans_file您翻译的original_file 格式如下:

ou
Dinheiro em caixa
Pagina
de
enviar
Principal

相关内容