使用 sed 替换字符,但如果它位于 bash csv 文件中的字符串中则不替换

问题描述 投票:0回答:1

大家早上好, 我有一个 csv,想用分隔符“;”替换所有分隔符“,”,但如果它在字符串中(在 csv 字段中),我必须保留“,”:

当前 csv

"001","User,Super","04/04/2024"

预期 csv

"001";"User,Super";"04/04/2024"

有没有办法排除字符串之间的检查?我想在 bash 中使用几个命令来执行此操作,而不需要编写自定义循环来检查每个字符并检查位置

我尝试了以下命令但没有成功:

sed -r 's/("*,*")|,/\;/g' test.csv
linux bash sed
1个回答
1
投票

假设:

  • 所有字段都用双引号括起来
  • 双引号不显示为实际数据
  • 双引号和逗号(分隔符)之间没有空格

注意:如果这些假设不正确,那么OP将需要使用一组更现实的样本数据来更新问题

一个简单的

sed
想法:

$ sed 's/","/";"/g' test.csv
"001";"User,Super";"04/04/2024"
© www.soinside.com 2019 - 2024. All rights reserved.