我有一个CSV文件,如下所示:
metadata,metadata,somevalue: a1;,,,,,,,,,,somevalue: b;,,,,,,,,,,,,,somevalue: c;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,somevalue: d*;,,,,,,,,,,,,,,,,somevalue: e*4; f; g;,,,,,,,,,,,somevalue: h;i;j*a,,,,,,
我想用*
DATAREMOVED
的列的所有内容
对于上面的例子,输出将是这样的:
metadata,metadata,somevalue: a1,,,,,,,,,,somevalue: b;,,,,,,,,,,,,,somevalue: c;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DATAREMOVED,,,,,,,,,,,,,,,,DATAREMOVED,,,,,,,,,,,DATAREMOVED,,,,,,
我已经尝试过这样的事情:sed 's/,.*?\*.*?;/DATAREMOVED/g'
但是它在比赛结束后从第一个,
到第一个,
继续抓取,但这并不起作用。
谢谢!
答案 0 :(得分:0)
Linq可以提供帮助。
public string ReplaceStar(string input)
{
var outputArray = input.Split(',').Select(subStr => subStr.Contains('*') ? "DATAREMOVED" : subStr).ToList();
return string.Join(",", outputArray);
}
答案 1 :(得分:0)
使用awk,您可以使用模式设置输入Field Separator,使用'DATAREMOVED'设置输出字段分隔符:
awk -F'[^,*]*\\*[^,]*' -v OFS='DATAREMOVED' '{$1=$1}1' yourfile
$1=$1
仅用于强制使用新字段分隔符更新记录。