通过预先固定值来修改文本字符串

时间:2016-01-04 13:13:22

标签: sed

我有一个包含500行和8列的csv文件。一栏是办公室电话号码。其中大约200个的形式为-1234,但需要为123-456-7890。

200个实例中的每个实例都有不同的后四个,因为它们是桌面电话号码。区号和交换部分对所有人来说都是一样的。举个例子,我们有三个数据点:

-2329
-5679
-8891

这三项需要转换为完整的电话号码,因此需要看起来像:

212-598-2329
212-598-5679
212-598-8891

任何人都有sed魔法来解决这个问题吗?

示例数据行如下所示:

Bill,Smith,Mr.,bsmith@mydomain.org,bsmith,-5315,800-878-5554,\N,\N,\N,\N

2 个答案:

答案 0 :(得分:0)

我会使用awk

awk -F, '{$6="212-598"$6}1' OFS=, input.file

使用,作为输入和输出字段分隔符,可以轻松访问第六个字段并添加静态值。

答案 1 :(得分:0)

替代sed

$ sed 's/,-/,212-598-/' missing_phone

Bill,Smith,Mr.,bsmith@mydomain.org,bsmith,212-598-5315,800-878-5554,\N,\N,\N,\N