使用sed更改csv文件中的数字

时间:2018-11-22 22:45:40

标签: linux

我有一个csv文件,其中包含3列,如下所示

  

Jones Smith 656220665

我想将其转换为

  

琼斯·史密斯000000000

我的问题不是所有数字的长度都相同。有些是7位数长。我似乎找不到一种将它们从当前格式更改为0,s的方法,而不得不使用sedcut

这是我尝试并尝试操纵以适应我的需求的2个代码

sed 's/\([^ ]*\) \([^_]*\)_\(.*\)/\1 \3/g'   Input_file

$ sed 's/\(\([^,]\+,\)\{1\}\)\([^,]\+,\)\(.*\)/\1\3\3\4/' /path/to/your/file

2 个答案:

答案 0 :(得分:0)

与其使用sed,不如这样做:

echo 'Jones Smith 656220665' | tr '[0-9]' '0'
Jones Smith 000000000

对于当时的整个文件:

tr '[0-9]' '0' < file > file.tmp

编辑1: 添加了sed解决方案:

sed 's/[0-9]/0/g' smith
Jones Smith 000000000

stil 编辑2:

cat ClientData.csv > ClientData.csv.bak
sed 's/[0-9]/0/g; w ClientData.csv' ClientData.csv.bak | cut -d" " -f 1-2

答案 1 :(得分:0)

您可以使用string inputName = "id=4 issue=critical level project=ABC group=Group A"; string[] values = inputName.Split(' '); List<string> output = new List<string>(); for (int i = 0; i < values.Length -1; i++) { if (values[i].Contains('=') && !values[i + 1].Contains('=')) { output.Add(values[i] + ' ' +values[i + 1]); } else if (!values[i].Contains('=')) { } else { output.Add(values[i]); } } string[] requiredValues = output.ToArray(); 的以下常规替换来非常简单地完成此操作:

sed

(其中sed 's/[0-9]/0/g` 'g'全局替换[0-9]的所有实例),例如

'0'

试一下,如果您还有其他问题,请告诉我。