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

时间:2019-03-27 06:35:46

标签: awk text-processing 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

1 个答案:

答案 0 :(得分:1)

POSIX awk利用扩展的正则表达式,这些正则表达式具有通过{m,n}定义字符复制的可能性

  

当匹配单个字符的ERE或用括号括起来的ERE之后是格式为{m}{m,}{m,n}的间隔表达式,以及该间隔表达式应匹配ERE重复出现的连续次数。 m和n的值是0 <= m<= n<= {RE_DUP_MAX}范围内的十进制整数,其中m指定出现的确切次数或最小次数,n指定出现的最大次数。表达式{m}与前面的ERE的m个匹配项完全匹配,{m,}至少与m个匹配项匹配,{m,n}匹配m和{ {1}}(含)。

     

来源:POSIX Regular Expressions

不幸的是,mawk不支持这种复制方法,可以从manual (Section 3 Regular Expressions)中读取。

因此,您不必使用nFS来定义字段分隔符-F '[|]{3}'