加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 删除第一列不是数字的行

发布时间:2020-12-16 01:47:27 所属栏目:安全 来源:网络整理
导读:我有一个大型数据集是一个CSV文件,我已经清理了很多.但是有些情况下,我有一个非数字列,我想删除这些行. 到目前为止,我认为这样的事情会起作用.我认为解决方案可能很简单.我不确定我是否能做到这样的事情.这是一个CSV文件,所以我试着告诉awk它用逗号分隔.第一
我有一个大型数据集是一个CSV文件,我已经清理了很多.但是有些情况下,我有一个非数字列,我想删除这些行.

到目前为止,我认为这样的事情会起作用.我认为解决方案可能很简单.我不确定我是否能做到这样的事情.这是一个CSV文件,所以我试着告诉awk它用逗号分隔.第一列中的良好值的一个例子是:323870133825187840

awk '/,/$1 != numeric'

对此有任何建议吗?我最初想过做某种单线,比如,[0-9]等等.如果有人能帮助我,我会非常感激.对于那里的人来说这可能就像孩子的游戏:)

解决方法

假设您只处理无符号整数值,您可以使用以下任一方法:

awk -F,'$1 ~ /^[[:digit:]]+$/'

要么

awk -F,'$1 !~ /[^[:digit:]]/'

两者都使用’隐式打印’动作.第一次检查$1只包含数字;第二个检查$1不包含非数字.

如果您的数字更一般(有符号,可能带有小数点,可能带有指数表示法 – 例如6.0221413e 23(Avogadro的数字)),那么您需要一个更复杂的正则表达式并使用正匹配,只选择字段中的行1与正则表达式匹配有效数字.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读