Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 解析AWK中搜索字段中的变量:语法问题_Bash_Awk - Fatal编程技术网

Bash 解析AWK中搜索字段中的变量:语法问题

Bash 解析AWK中搜索字段中的变量:语法问题,bash,awk,Bash,Awk,我读了一些主题,但仍然不能解决问题 这是一个测试文件,例如: 1:abc:100:/k/ll 2:abd:120:/k/gg 3:www:3:/k/ll 4:rrr:66:/k/gg 5:ddd:140:/k/ll 这是我的代码: ZM=${2:-test} VAR=$1 awk -F':' -v one="$VAR" '$4 ~ one $3 > 100' $ZM 我想让这个脚本写这些行,其中3字段大于100,4字段包含变量中指定的字符串,例如“ll” 例如: /test.sh ll

我读了一些主题,但仍然不能解决问题

这是一个测试文件,例如:

1:abc:100:/k/ll
2:abd:120:/k/gg
3:www:3:/k/ll
4:rrr:66:/k/gg
5:ddd:140:/k/ll
这是我的代码:

ZM=${2:-test}
VAR=$1
awk -F':' -v one="$VAR" '$4 ~ one $3 > 100' $ZM
我想让这个脚本写这些行,其中3字段大于100,4字段包含变量中指定的字符串,例如“ll”

例如: /test.sh ll

输出:

1:abc:100:/k/ll
5:ddd:140:/k/ll
我做错了什么?谢谢你的回复

3美元>100美元

 awk -v FS=":" -v one=$VAR '{if($3>100 && $4~one){print $0}}' my_file
对于$3>=100(因为您的输出与您的请求不同)


您只是缺少了描述中的“and”部分:
$4~one&$3>100
——awk表达式使用(基本上)与C相同的运算符。另请参见@glenn,您不妨将该注释作为答案。即使是在评论中。block.-1不,这不是在awk中如何实现的,它完全忽略了条件/动作语言的要点。有关正确答案,请参阅@GlennJackman的评论。“条件/操作语言”?请讨论。您是否测试了我的命令行以获得OP预期结果?从给定输入集生成预期输出的脚本非常接近确定解决方案的起点,离终点还有很长的路要走。获取Arnold Robbins和google的《有效的Awk编程》一书《Awk模式行动》,记住几乎所有Awk文档中使用的“模式”一词都是误导性的,更好的词是“条件”。
 awk -v FS=":" -v one=$VAR '{if($3>=100 && $4~one){print $0}}' my_file