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