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
打印该行。
我有一个制表符分隔的 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
打印该行。