gpt4 book ai didi

linux - unix awk 命令没有列出多个匹配的模式

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:48 25 4
gpt4 key购买 nike

我有以下 unix 变量模式。我想根据 'CREATE' , 'TABLE' & ',' 模式搜索和输出

a ="CREATE TABLE T1, is my TABLE but , DROP TABLE is not CREATE my TABLE T2, is table" # it may keep going but pattern is same ....
echo $a | awk -F'CREATE' '{print $2}' | awk -F'TABLE' '{print $2}' | awk -F',' '{print $1}'

输出

T1

我要打印

T1
T2
...

最佳答案

您的示例数据并不重要,但您可以尝试以下想法:

awk -v RS=, '/TABLE/&&/CREATE/{print $NF}'

解释:

  • 我们将 Record Separator 设置为 ,,因此它会在它看到的每个 , 处拆分该行。因此,您的输入行被视为:

    创建表 T1

    是我的 TABLE 但创建我的 TABLE T2

    是表格

  • /TABLE/&&/CREATE 是一个正则表达式,它查看包含单词 TABLECREATE 的行。您可以包含单词边界以仅匹配 TABLE 而不是 CONSTABLE

  • print $NF 表示打印最后一个字段。 NF 是一个特殊的 awk 变量,包含多个字段,$NF 保存最后一个字段的值。

$ echo "CREATE TABLE T1, is my TABLE but CREATE my TABLE T2, is table" | awk -v RS=, '/TABLE/&&/CREATE/{print $NF}'
T1
T2

关于linux - unix awk 命令没有列出多个匹配的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097429/

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