首页 > 解决方案 > 如何从 UNIX 中管道分隔文件的第 n 列的值中删除所有非数字字符

问题描述

我在 UNIX 中有许多记录有管道分隔符的文件。我想从包含电话号码的第 20 列的值中删除非字母数字和非特殊字符,并将正确修剪 10 位数字。

标签: regexfileunixpipedelimited

解决方案


awk -F\| '{ OFS="|";gsub(/[[:alpha:]]|[[:punct:]]/,"",$4);$0=substr($4,(length($4)-10),length($4)) }1' file

将文件分隔符设置为 | 然后使用 gsub 将任何字母字符或标点符号替换为空字符。打印行。


推荐阅读