regex - 这个awk语句是什么意思?

标签 regex linux unix awk

我在awk中有如下语句

$ gawk '$2 == "-"  { print $1 }' file

我想知道这条指令到底做了什么,因为我无法准确解析我需要的词。

编辑:我该怎么做才能跳过以下星号之前的行? 假设我有以下几行:

text
text
text                


            * * * * * * *

line1 - 
line2 -

然后我只想过滤

line1
line2

加上我上面贴的那句话...

$ gawk '$2 == "-"  { print $1 }' file

感谢您的时间和回复!

最佳答案

这将找到第二列(以空格分隔)为 - 的所有行,然后打印第一列。

第一部分($2 == "-")检查第二列是否为 -,如果是,则运行附加的 {} block ,打印第一列($0 为整行, $1、$2 等是第一列、第二列、...列。)

空格是这里的分隔符,因为它们是 awk 中的默认分隔符。

编辑:要执行您想现在执行的操作,请尝试以下操作(不是最优雅的,但应该可行。)

gawk 'BEGIN { p = 0 } { if (p != 0 && $2 == "-") { print $1 } else { p = ($0 == "* * * * * * *")? 1 : 0 } }'

分散在更多行上以清楚发生的事情:

gawk 'BEGIN { p = 0 }
            { if (p != 0 && $2 == "-")
                 { print $1 }
              else
                 { p = ($0 == "* * * * * * *")? 1 : 0 }
            }'

关于regex - 这个awk语句是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18347661/

相关文章:

Java解析字符串表达式

regex - grep 的 at 标志被捕获为空白

c - 如何在 C 中设置 Don't Fragment (IP_DF) 标志

linux - 文件重定向在 Bash 脚本中失败,但在 Bash 终端中失败

linux - 将重定向符号与 find -exec 结合使用的更好方法

c - 返回 301 永久移动的 UNIX C HTTP 请求

mysql - REGEXP 使用 MySQL 匹配字符串中的任一关键字

python - 如何用新行和冒号解析一行?

python - 如何在 Linux 上动态插入来自 Python 的 C 函数(没有 LD_PRELOAD)?

c - 如何为 connect() 设置超时以及如何测量它?