怎么实现.csv 文件中的某个特点内容修改 用shell 脚本
时间: 2024-03-11 13:50:55 浏览: 78
可以使用 `awk` 命令实现 .csv 文件中的特定内容修改。
假设要修改的 .csv 文件路径为 `/path/to/myfile.csv`,其中需要替换的是某一列的值,可以使用如下的 shell 脚本:
```
#!/bin/bash
# 文件路径
csv_file="/path/to/myfile.csv"
# 列号
col=4
# 替换的内容
old_value="old_value"
new_value="new_value"
# 使用 awk 命令替换内容
awk -v col="${col}" -v old="${old_value}" -v new="${new_value}" '
BEGIN { FS=OFS="," } # 设置输入输出分隔符为逗号
{
if ($col == old) { # 如果第 col 列的值等于 old_value
$col = new # 则将其替换为 new_value
}
print # 输出修改后的行
}' "$csv_file" > "${csv_file}.new" && mv "${csv_file}.new" "$csv_file"
```
其中,`${col}` 表示需要替换的列号(从 1 开始)。`${old_value}` 和 `${new_value}` 分别表示需要替换的旧值和新值。`${csv_file}` 表示需要修改的 .csv 文件路径。
`awk` 命令中的代码块会对 .csv 文件中的每一行进行处理。`${FS}` 和 `${OFS}` 分别表示输入和输出的分隔符,这里都设置为逗号。`${$col}` 表示当前行第 `${col}` 列的值。如果该值等于 `${old_value}`,则将其替换为 `${new_value}`。最后,使用 `print` 输出修改后的行。
修改后的内容会被写入一个中间文件 `${csv_file}.new` 中,然后再将其重命名为原文件名,从而实现修改 .csv 文件的操作。
阅读全文