【问题标题】:How to remove all non-numeric characters from the value of nth column of a pipe delimited files in UNIX [closed]如何从 UNIX 中管道分隔文件的第 n 列的值中删除所有非数字字符 [关闭]
【发布时间】:2021-04-02 09:38:52
【问题描述】:

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

【问题讨论】:

  • 请向我们展示您尝试过的代码。提供一个简短的输入样本以及与该输入相对应的预期输出,我们将为您提供帮助。
  • stackoverflow.com/q/45444988/2191572。如果您需要 CSV 的全面正则表达式,请参阅 stackoverflow.com/q/18144431/2191572。您已经展示了零尝试,因此无法猜测您离实现目标有多近。祝你好运!
  • 例如管道分隔文件的内容如下 ABCD|123|HI|123ABCD#$1234|JAY GEFR|245|BY|2472462342#$41|JAM 她你可以看到第 4 列有字母数字和特殊字符,我只想保留数值

标签: regex file unix pipe delimited


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

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

【讨论】:

  • 如何只保留第 4 列右侧的 10 位数字。我的意思是如何在这里使用 substr 来实现这一点。
  • $0=substr($0,(length($0)-10),length($0))
  • 能否请您分享在 awk -F\| 中调整的完整命令'{ OFS="|";gsub(/[[:alpha:]]|[[:punct:]]/,"",$4) }1' 文件
  • 我已经修改了答案
猜你喜欢
  • 1970-01-01
  • 2018-10-21
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
  • 2010-12-04
  • 2021-02-25
  • 2011-10-19
  • 2019-05-15
相关资源
最近更新 更多