python从字符串中删除电话号码

时间:2015-07-22 00:29:52

标签: python regex bash awk sed

我有一个看起来像这样的文本文件:

rgf34 | 9 | 2015-07-20 | hello this is my number 1234567890 
rgf35 | 10 | 2015-07-20 | my number : 123 - 456 -8888 can you check...

列是管道分隔的,每个新数据都在新行上。

我如何通过第三栏删除所有的电话号码? (所有电话号码都是10位数,我不知道它们是否有括号或短划线。)

我知道我可以使用awk来获取第三列中的数据,但是我对如何执行正则表达式部分感到难过:

这是awk部分:

awk -F "|" '{print $4}' myfile.txt

预期产出:

rgf34 | 9 | 2015-07-20 | hello this is my number 
rgf35 | 10 | 2015-07-20 | my number : can you check...

1 个答案:

答案 0 :(得分:4)

如果你把它放在a.awk中

BEGIN {
    FS = OFS = "|"
}
{
    sub(/[0-9].*[0-9]/, "", $4)
    print
}

并运行

awk -f a.awk foo.txt

您将获得所需的输出。

如果输入是

rgf34 | 9 | 2015-07-20 | hello this is my number 1234567890 
rgf35 | 10 | 2015-07-20 | my number : 123 - 456 -8888 can you check...

输出

rgf34 | 9 | 2015-07-20 | hello this is my number
rgf35 | 10 | 2015-07-20 | my number :  can you check...