在 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
) 并使用给定的字段分隔符时自动发生。一种模型-视图-控制器:)
我正在尝试将 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
) 并使用给定的字段分隔符时自动发生。一种模型-视图-控制器:)