gpt4 book ai didi

linux - 如何解析awk中的单词?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:17 26 4
gpt4 key购买 nike

我想知道如何解析如下所示的段落:

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text
And many other lines with text that I do not need

* * * * * * *

Autolisp - Dialect of LISP used by the Autocad CAD package, Autodesk,
Sausalito, CA.

CPL -

1. Combined Programming Language. U Cambridge and U London. A very
complex language, syntactically based on ALGOL-60, with a pure functional
subset.

Modula-3* - Incoprporation of Modula-2* ideas into Modula-3. "Modula-3*:

所以我可以从awk语句中得到如下exit:

Autolisp
CPL
Modula-3*

下面的句子我都试过了,因为我要过滤的文件很大。它是迄今为止所有现有编程语言的列表,但基本上所有行都遵循与上述相同的模式

到目前为止我用过的句子:

BEGIN{$0 !~ /^ / && NF == 2 && $2 == "-"} { print $1 }

BEGIN{RS=""; ORS="\n\n"; FS=OFS="\n"} /^FLIP -/{print $1,$3}

BEGIN{RS=""; FS=OFS="\n"} {print $1 NF-1}

BEGIN{NF == 2 && $2 == "-" } { print $1 }

BEGIN { RS = "" } { print $1 }

到目前为止,对我有用的句子是:

BEGIN { RS = "\n\n"; FS = " - " }
{ print $1 }

awk -F " - " "/ - /{ print $1 }" file.txt

但它仍然打印或跳过我需要/不需要的行。

感谢您的帮助和回复!由于我是AWK编程的菜鸟,我这几天脑子坏了

最佳答案

默认的 FS 应该没问题,为了避免任何重复的行,您可以将输出通过管道传输到 sort -u

$ gawk '$2 == "-"  { print $1 }' file | sort -u
Autolisp
CPL
Modula-3*

它可能不会过滤掉您想要的所有内容,但您可以继续添加规则,直到过滤掉不良数据。

或者,您可以通过使用关联数组来避免使用排序:

$ gawk '$2=="-" { arr[$1] } END { for (key in arr) print key}' file 
Autolisp
CPL
Modula-3*

关于linux - 如何解析awk中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18246370/

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