AWK:在每组数据后插入一行

AWK: Insert a row after each group of data

我有一个制表符分隔的 csv 文件。该文件按第 6 列排序,该列包含每个组的键。我需要的是在每个组之后插入一个字符串作为分隔符。

输入:

car    camaleon    queso    cabra    coche    531    cama    leon    lechuga
dow    click    comedia    clase    tierno    531    falda    camisa    fiel
rederdd    black    cama    reloj    visel    532    pila    resto    cena
viento    lamer    viperest    cash    win    533    pale    babe    atun
taza    terron    cabron    fisgon    dedo    533    one    table    deep
black    cama     leona    lechuga    pies    534    blast    pin    dead 

期望的输出:

car    camaleon    queso    cabra    coche    531    cama    leon    lechuga
dow    click    comedia    clase    tierno    531    falda    camisa    fiel
<string>
rederdd    black    cama    reloj    visel    532    pila    resto    cena
<string>
viento    lamer    viperest    cash    win    533    pale    babe    atun
taza    terron    cabron    fisgon    dedo    533    one    table    deep
<string>
black    cama     leona    lechuga    pies    534    blast    pin    dead 

我如何控制第 6 列的值何时发生变化,以便在发生变化时插入字符串?。使用 AWK.

我会使用 awk。像这样:

awk -F'\t' 'NR>1&&g!={print "----"}{g=}1' input.txt

NR>1检查当前记录是否不是第一条记录。 g!=检查group的一个名为g的变量是否与之前保存的相同。如果这两个条件都为真,则打印分隔符。

g= 将组 ID 存储在变量 g 中。 1 始终为真并使 awk 打印该行。