linux - 在 Linux 中将模式文本从一个文件复制到另一个文件
问题描述
我有一个 csv 文件,在每个“=”之后,下面的文本作为变量值。我想获取每个变量的值并将其替换为另一个文件,该文件具有完全相同的变量名称,前缀为“$$”。
这两个文件都在 Linux 盒子中,我正在尝试使用 sed/awk 进行 shell 脚本编写,但很难通过。
文件_1.csv
MIN_FISCAL_PERIOD=DEC_FY_20
MAX_FISCAL_PERIOD=APR_FY_20
MIN_CALENDAR_DATE=12/01/2019
MAX_CALENDAR_DATE=04/01/2020
file_2_to_replace.prm
$$PI_MIN_CALENDAR_DATE=01/01/2018
$$PI_MAX_CALENDAR_DATE=12/01/2019
$$PI_MIN_FISCAL_PERIOD=NULL
$$PI_MAX_FISCAL_PERIOD=NULL
在上面的示例中,应将 file_1.csv 中每个变量的值复制并替换为 file_2_to_replace.prm 中的适当变量。
解决方案
假设我之前问过,行号匹配,这是一个简单的剪切和粘贴。
#!/bin/sh
cat file_2_to_replace.prm | cut -d'=' -f1 > temp
cat file_1.csv | cut -d'=' -f2 > temp2
paste -d'=' temp temp2 | sed s'/^=$//' > file_2_to_replace.prm
推荐阅读
- python - 在循环中访问以下两个索引
- python - 如何为seaborn图设置特定标签?
- php - 如何为 php 构建 .json 文件
- powerbi - 基于切片器动态改变 Y 轴大小
- javascript - 如何使用 discord.js 在不和谐中创建斜杠命令
- instagram - instagram api获取具有权限和范围的访问令牌未按预期工作
- rust - 为什么在尝试为所有引用类型实现特征时会出现递归
- angular - 使用 --prod 选项构建时动态加载角度组件的问题
- google-chrome-extension - chrome 扩展 - 如何使用 setTimeout 循环?
- c# - 在 C# 中使用 ECDSA 验证签名,其中签名是由 Java 生成的