gpt4 book ai didi

c - 有条件地替换 txt 中的行 [vim、batch、awk、C]

转载 作者:行者123 更新时间:2023-11-30 18:41:41 25 4
gpt4 key购买 nike

我有一个包含 4 个表格列的文本文件,该文本是一个程序的输出,该程序无法识别某些字符,例如撇号 ' 或中点·,并且该错误被标记为 Fz。结构将是 with the numbers are removed. Little explanation: each line is a TAG that represents morphosyntax of a word in Catalonian. In this language can be contractions (the apostrophes) at the beginning or at the end of a word.



<p>I need to find those errors, erase that line and modify the previous or next line depending if the apostrophe is at the beginning or at the end of a word.</p>

<p>Example:
- Original</p>

<pre><code>s segon NCMN000 1
’ ’ Fz 1
l litre NCMN000 1
’ ’ Fz 1
esplèndida esplèndid AQ0FS0 1
l litre NCMN000 1
’ ’ Fz 1
armaren armar VMIS3P0 0.388664
’ ’ Fz 1
l litre NCMN000 1
obeïren obeir VMIS3P0 0.388664
t t AQ0CS0 0.0283644
‘ ‘ Fz 1
aparellen aparellar VMIP3P0 0.890625
‘ ‘ Fz 1
t t AQ0CS0 0.0283644
</code></pre>

<p>-Correct (Handtyped)</p>

s'  P0300000    es
l' DA0CS0 el
esplèndida AQ0FS0 esplèndid
l' PP3MSA00 ell
armaren VMIS3P0 armar
'l PP3MSA00 ell
obeïren VMIS3P0 obeir
t' PP2CS000 tu
aparellen VMIP3P0 aparellar
‘t PP2CS000 tu

正如你所看到的,相同的错误有不同的变化,因为它对应于上一行或下一行,即使在同一行中也可以有多个解决方案(进行切换并由用户决定),具体取决于性别和收缩性别:

  • 情感:(女性)LA emoció -> l'emoció。

  • 辩护人(律师):(男性)EL advocat -> l'advocat

最佳答案

使用正则表达式来识别错误行,例如:

^[’‘]\s+[’‘]\s+[F][z]\s+[[:d:]]

逐行浏览文件,将该行分配给字符串缓冲区。

使用 regcomp 编译上面的正则表达式:

regex_t regex;
int reti = regcomp(&regex, "^[’‘]\s+[’‘]\s+[F][z]\s+[[:d:]]", 0);
reti = regexec(&regex, bufferAsString, 0, NULL, 0); //where bufferAsString
//is your file's buffer as a string ending in \0

然后检查 reti 的值,如果确实你找到了你的行,你可以用它或它的前一个做任何事情。

正则表达式的意思是:行开头,紧接着是“OR a ”,然后是至少一个或多个空格/制表符,后面是“OR a ”,后面是空格,后面是 F,然后是 z、一些空格和一个数字数字。

越精确越好,所以如果您知道只有 4 个空格,请将\s+ 更改为\s\s\s\s,或者如果您知道 Fz 之后的数字始终为 1,请将 [ [:d:]] 与 [1] 。

下面是 C 语言正则表达式的示例: Regular expressions in C: examples?

关于c - 有条件地替换 txt 中的行 [vim、batch、awk、C],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20364696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com