繁体   English   中英

awk在开始块内使用shell变量

[英]Awk use shell variable inside begin block

以下是一个名为sites.txt的文件:

google is good
yahoo is dying
microsoft is ok
faceBook is vulnerable

脚本::

#!/bin/bash

site="facebook"

awk -v s="$site" 'BEGIN {IGNORECASE = 1} /s/' sites.txt

但是上面的命令不会返回任何输出。 如何在begin块中使用shell变量来显示正确的输出。

你的命令字面匹配s中的每一行。

您应该使用~运算符:

awk -v s="$site" 'BEGIN {IGNORECASE = 1} $0 ~ s' sites.txt

请注意, IGNORECASE = 1是gnu awk功能,如果要使用POSIX兼容方式,请使用:

awk -v s="$site" 'tolower($0) ~ tolower(s)' sites.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM