我有一个看起来像这样的文本文件:
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...
答案 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...