字符串示例
blah:blah:example - 1234
blah1:blah2:example2 - 3213
我想检查的内容是否存在
- 1234
但数字可以不同
我知道我可以使用
awk -F: '$3 ~ / - /'
检查“ - ”是否存在,但如何应用数字可能性?
答案1
所以你基本上想检查“-”后面是否有一些数字?
如果你想这样做,你可以写
awk -F: '$3 ~ / - [0-9]+/'
更先进的解决方案
如果您的最后一个数字有一个可能值的数组(例如 1、2、3、4、5),您可以编写如下内容。
values=(1 2 3 4 5)
awk -v vals="$(echo ${values[@]})" \
'{if(match(vals,$3" ")){print $0}}' input_file.txt
这将仅打印您指定的数组input_file.txt
中具有最后一个数字的那些条目。values
答案2
以下命令将显示倒数第二个空格分隔列中包含a 且最后一个空格分隔列中包含正整数的awk
所有行:file
-
awk '$(NF-1) == "-" && $NF ~ /^[0-9]+$/' file
以下grep
命令可以完成相同的操作:
grep -E -e '-[[:space:]]+[0-9]+$' file
需要-E
来理解+
模式中的修饰符,并且-e
需要停止将模式中的grep
解释为命令行选项(也可以更改为 替换,这表示任何命令行选项的结束)。-
-e
--