1

我有一个文本文件,每一行的形式是:

TAB WORD TAB PoS TAB FREQ#

Word    PoS Freq
the Det 61847
of  Prep    29391
and Conj    26817
a   Det 21626
in  Prep    18214
to  Inf 16284
it  Pron    10875
is  Verb    9982
to  Prep    9343
was Verb    9236
I   Pron    8875
for Prep    8412
that    Conj    7308
you Pron    6954

你们中的一个正则表达式向导会帮助我从文件中分离出单词吗?希望我会在 TextPad 中进行查找和替换,就是这样。多次查找和替换很好。一件事:注意搜索“动词”也会出现“动词”这个词,而不仅仅是词性,所以要小心。最后,我想以每行 1 个单词结束。

非常感谢!

4

4 回答 4

1

您可以只使用awk删除第一列,如

awk '{print $1}' /path/to/filename

通过使用跳过第一行

awk 'NR!=1 {print $1}' /path/to/filename
于 2009-10-06T08:21:13.170 回答
1

没有必要为此使用正则表达式。例如,您可以使用cut

cut -f1 <inputfile
于 2009-10-06T08:22:35.850 回答
1

类似的东西\s*([a-zA-z]+)\s*([a-zA-z]+)会将单词和 PoS 作为组返回。然后,您可以在替换语句中将它们用作 $1 和 $2 以根据需要进行输出。

如果您只想要 WORD 部分,您可以在替换中使用 $1 。

于 2009-10-06T08:38:37.187 回答
1

我认为microsoft excel可以更好地帮助你......

只需将整个文本复制到excel上,它将被格式化为表格,然后继续为单词选择适当的列单元格,最后将它们复制到记事本上。

我敢打赌这是最简单的方法。

如果 excel 将所有值存储在单个列中,则在单独的列中通过以下方式提取单词:

=修剪(左(C1,maxchar))

于 2009-10-06T09:07:40.830 回答