如何用linux命令的目标字符串替换与txt文件中的整个字符串匹配的另一个txt文件的字符串?

8zzbczxx  于 2022-12-29  发布在  Linux
关注(0)|答案(1)|浏览(144)

使用下面的命令,我成功地用[talend template tag]替换了一个字符串,该字符串与temp.txt文件中的整个句子在target.txt文件中匹配。

sed -e '/<\!-- talend template tag -->/ {' -e 'r temp.txt' -e 'd' -e '}' -i test_target.txt
    • VI温度文本**
<option value="load_csv_to_db_talend_template">[template]
 load_csv_to_db</option>
<option value="transform_db_to_view_talend_template">[template]
 transform_db_to_view</option>
    • vi测试目标. txt**
<select class="form-control" id="job_type" name="job_type">
  <option disabled selected value=""> {{ _("Select the type of Job") }} </option>                 
  <option value="jar_file">jar</option>
  <option value="sh_file">linux shell(*.sh)</option>                            
  <option value="python_file">python</option>
  <option value="talend_file">Talend</option>
  <option value="postgres_sql_file">PostgreSQL</option>
  <option value="oracle_sql_file">OracleSQL</option>                       
  <option value="linux_bash">linux bash command</option>
  <!-- talend template tag -->
</select>
    • 在sed命令之后执行vi test_target. txt**
<select class="form-control" id="job_type" name="job_type">
  <option disabled selected value=""> {{ _("Select the type of Job") }} </option>
  <option value="jar_file">jar</option>
  <option value="sh_file">linux shell(*.sh)</option>
  <option value="python_file">python</option>
  <option value="talend_file">Talend</option>
  <option value="postgres_sql_file">PostgreSQL</option>
  <option value="oracle_sql_file">OracleSQL</option>
  <option value="linux_bash">linux bash command</option>
  <option value="extract_api_file_to_csv_talend_template">[template]
    extract_api_file_to_csv</option>
  <option value="extract_db_to_csv_talend_template">[template]
    extract_db_to_csv</option>
  <option value="load_csv_to_db_talend_template">[template]
    load_csv_to_db</option>
  <option value="transform_db_to_view_talend_template">[template]
    transform_db_to_view</option>
</select>

但它未能产生将上述结果恢复到原始状态的指示。

    • 命令后应有[test_target. txt](已还原)**
<select class="form-control" id="job_type" name="job_type">
  <option disabled selected value=""> {{ _("Select the type of Job") }} </option>                 
  <option value="jar_file">jar</option>
  <option value="sh_file">linux shell(*.sh)</option>                            
  <option value="python_file">python</option>
  <option value="talend_file">Talend</option>
  <option value="postgres_sql_file">PostgreSQL</option>
  <option value="oracle_sql_file">OracleSQL</option>                       
  <option value="linux_bash">linux bash command</option>
  <!-- talend template tag -->
</select>

我需要一个Linux命令来解决这个问题。
PS.我想做的是一个单独的订单,和之前的工作没有任何关系,换句话说,我说恢复它是为了容易理解,但它不是一个恢复作业。
谢谢你们

bxjv4tth

bxjv4tth1#

通过向-i选项添加后缀,告知sed将原始文件保存在备份文件中。

sed -e '/<\!-- talend template tag -->/ {' -e 'r temp.txt' -e 'd' -e '}' -i.bak test_target.txt

然后,要恢复原始文件,请将其复制回去:

cp test_target.txt.bak test_target.txt

相关问题