在 awk 中集成计数器并降低特定列的值

Integrate counter in awk and lower value of specific column

我正在尝试将 2 个函数合并到我的 awk 命令中。 我想要第 2 列中的 Col1 中的信息 tolower(因此 Col1 中的信息将是 2 个列的值 - Col1 和 Col2,以及 Col2 中的 lower 中的值)并且我想从 1-N 开始计数,以我拥有的某些标记的开头和结尾。

数据(制表符分隔)当前如下所示:

<s>
He  PRP -
could   MD  -
tell    VB  -
she PRP -
was VBD -
teasing VBG -
him PRP -
.   .   .
</s>
<s>
He  PRP -
kept    VBD -
his PRP$    -
eyes    NNS -
closed  VBD -
,   ,   -
but CC  -
he  PRP -
could   MD  -
feel    VB  -
himself PRP -
smiling VBG -
.   .   .
</s>

理想的输出应该是这样的:

<s>
He  he  PRP 1
could   could   MD  2
tell    tell    VB  3
she     she PRP 4
was was VBD     5
teasing teasing VBG 6
him him PRP 7
.   .   .   8
</s>
<s>
He  he  PRP 1-
kept    kept    VBD 2
his his PRP$    3
eyes    eyes    NNS 4
closed  closed  VBD 5
,   ,   ,   6
but but CC  7
he  he  PRP 8
could   could   MD  9
feel    feel    VB  10
himself     himself PRP 11
smiling smiling VBG 12
.   .   .   13
</s>

我正在尝试的两步 awk 不起作用是这样的:

第 1 步:

awk '!NF{[=12=]=x}1' input | awk '{=; print "<s>\n" [=12=] "\t.\n</s>"}' RS=  FS='\n' OFS='\t-\n' > output

这里不知道怎么把“-”变成计数器

和第2步(直接报错):

awk '{print  "\t" ' = tolower()' "\t"  "\t" }' input > output

有什么建议 1. 关于如何解决 lower 和 counter 以及 2. 是否可以将这两个步骤结合起来?

提前致谢

我会做类似的事情:

$ awk 'BEGIN{FS=OFS="\t"} NF>1{= FS tolower(); =++f} NF==1{f=0}1' file
<s>
He he PRP - 1
could could MD - 2
tell tell VB - 3
she she PRP - 4
was was VBD - 5
teasing teasing VBG - 6
him him PRP - 7
. . . . 8
</s>
<s>
He he PRP - 1
kept kept VBD - 2
his his PRP$ - 3
eyes eyes NNS - 4
closed closed VBD - 5
, , , - 6
but but CC - 7
he he PRP - 8
could could MD - 9
feel feel VB - 10
himself himself PRP - 11
smiling smiling VBG - 12
. . . . 13
</s>

也就是说,在没有 <s> 行上设置 </code> 和 <code>,否则重置计数器(是的,我知道它重置了两次,但我想不出更整洁的东西现在)。然后1正常打印。

请注意,您经常使用 print 和分隔符。最好只更改字段并让 print 在 True 条件 (1) 并使用给定的字段分隔符时自动发生。一种模型-视图-控制器:)