linux - 该怎么做而不是 awk 中的正则表达式 exp

标签 linux shell unix awk scripting

现在我正在使用 awk 来搜索我放入正则表达式中的字符串,但是我正在尝试使用“定义的变量”来代替使我的代码更可重用。我要替换的代码是:

awk '
    /lksdfjsalfjl/ { counter++}
    END{}
' file

在网上搜索时,我发现一个变量不能在/.../中使用。您对替代方案有什么建议吗?

最佳答案

使用~进行正则匹配:

awk -v x='lksdfjsalfjl'  '$0~x {counter++} END{print counter+0}' file

更详细:

  • -v x='lksdfjsalfjl'

    这定义了一个变量x

  • $0~x {counter++}

    如果当前行 $0x 中的正则表达式匹配,这会增加计数器。

如果您愿意,您可以使用 shell 变量来设置 awk 变量:

a='lksdfjsalfjl'
awk -v x="$a"  '$0~x {counter++} END{print counter+0}' file

关于linux - 该怎么做而不是 awk 中的正则表达式 exp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31061528/

相关文章:

c - 处理 C 只读文件关闭错误

linux - Raspbian - 从 HID 设备读取数据

android - VirtualBox Linux 无法挂载安卓设备

linux - 使用 shell 脚本生成一系列数字

python - shell脚本: compile and execute a python via shell script

c++ - 底层段寄存器的线程本地实际使用

shell - 如何从另一个文件中查找包含任何字符串的行?

linux - 绕过 Linux 集群网关 - 从桌面直接进入节点

c - fcntl 不工作

c - 一个简单的fork程序