【问题标题】:Shell scripting queryShell 脚本查询
【发布时间】:2015-09-02 02:23:51
【问题描述】:

重构Shell scripting to find the delimiter

下面是我的输入文件:

ABC|123|E
NNN|106||E
ORC|244|E
BLU|513|N
ASD|164,E
LMS|216,E
ANO|18,E,
MAY|393|E,

从上面的文件中,我期望脚本中的错误行是

NNN|106||E
ASD|164,E
LMS|216,E
ANO|18,E,
MAY|393|E,

我尝试过使用 awk -F\| 'NF!=3' 文件(由 user000001 建议)。我得到以下输出:

NNN|106||E
ASD|164,E
LMS|216,E
ANO|18,E,

因此,此命令会丢失具有 MAY|393|E, 的最后一行。

我也想要最后一行,因为它的末尾有“,”。我也不能保证它会一直是“,”。所以需要一些通用的东西。有些人会检查我的文件是否以字母数字结尾?

【问题讨论】:

    标签: bash shell awk grep


    【解决方案1】:

    求救

    awk -F"|" 'NF!=3 || match($0,"[,]")'
    

    您可以向正则表达式字符集添加其他分隔符。

    【讨论】:

    • 有没有其他方法,不指定“,”作为分隔符之一?正如我之前提到的,我不确定它还能包含什么。有什么通用的吗? “|”将永远在那里,我对 awk -F"|" 没有任何问题'NF!=3。我唯一的问题是以“,”结尾的行。因为它不会总是“,”。
    • 您需要知道什么是有效字段以及什么可以作为分隔符。例如如果“;”可以是应该计算的分隔符,您可以将正则表达式更改为[,;]
    • 谢谢,我会检查一下。
    猜你喜欢
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多