需要使用 mawk 删除重复的行(特别是)



我有一个工作正常的gawk命令。但是我有一台安装了 mawk 的机器,当我尝试安装 gawk 时,它会抱怨依赖项损坏。我想将此行更改为 mawk 语法。

awk -F '[|]{3}' 'BEGIN {OFS="|||"} !seen[$4]++ {print $4,$7,$3,$5,$6,$8,$9,$10,$11}' $1

输入文件:它是一个三管分隔文件

A|||B|||C|||D|||E|||F|||G|||H|||I|||J|||K||||L|||M|||N|||O|||P|||Q|||R|||S||||T|||U
1|||2|||3|||4|||5|||6|||7|||8|||9|||10|||11|||12|||13|||14|||15|||16|||17|||18|||19

POSIX awk 利用扩展正则表达式,这些正则表达式可以通过{m,n}来定义字符重复

当与单个字符匹配的 ERE 或括在括号中的 ERE 后跟格式为{m}{m,}{m,n}的区间表达式时,它应与重复连续出现的 ERE 匹配的内容匹配。m和 n 的值是0 <= m<= n<= {RE_DUP_MAX}范围内的十进制整数,其中m指定确切或最小出现次数,n指定最大出现次数。表达式{m}与前面的 EREm出现次数完全匹配,{m,}至少匹配 m 次出现次数,并且{m,n}匹配mn之间的任意次数(包括 )。

来源:POSIX 正则表达式

不幸的是,mawk 不支持这种复制方法,可以从手册中读取(第 3 节正则表达式)。

因此,与其通过-F '[|]{3}'来定义字段分隔符FS,不如使用-F '[|][|][|]'-F "\|\|\|"

最新更新