我有一个看起来像这样的文本文件:
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...
解决方法:
如果你把它放在a.awk中
BEGIN {
FS = OFS = "|"
}
{
sub(/[0-9].*[0-9]/, "", $4)
}
并运行
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...
标签:python,bash,regex,sed,awk
来源: https://codeday.me/bug/20190623/1273198.html