regex - 如何从 UNIX 中管道分隔文件的第 n 列的值中删除所有非数字字符
问题描述
我在 UNIX 中有许多记录有管道分隔符的文件。我想从包含电话号码的第 20 列的值中删除非字母数字和非特殊字符,并将正确修剪 10 位数字。
解决方案
awk -F\| '{ OFS="|";gsub(/[[:alpha:]]|[[:punct:]]/,"",$4);$0=substr($4,(length($4)-10),length($4)) }1' file
将文件分隔符设置为 | 然后使用 gsub 将任何字母字符或标点符号替换为空字符。打印行。
推荐阅读
- reactjs - 如何使用 Swiper Reactjs 使用动态内容制作每个视图的自动幻灯片
- c - 为什么我得到 0xc00000005?
- npgsql - NpgsqlConnection:无法从传输连接中读取数据:远程主机强行关闭了现有连接
- angular - 为什么路径定位策略不适用于 ng serve
- xml - 转义 XML 不考虑使用 XSLT 的命名空间并被忽略(使用 Mule XSLT 组件)
- reactjs - Firebase auth:currentUser 对象中有哪些详细信息,以及如何访问它们?
- javascript - 如何从字符串创建关联数组?
- mongodb - MongoDB 不使用我的索引(数组,布尔值)
- mysql - 使用 MySQL 中的过程将多个条目插入表中
- .net - nuke-build nuke .tmp\shell-completion.yml 被另一个进程阻止