Linux Bash:如果第二列中的数字大于3,如何保持行?
如果第二列中的数字(用空格分隔)大于3,保持行的最佳方式是什么 我不能使用awk或sed!-- 输入:Linux Bash:如果第二列中的数字大于3,如何保持行?,linux,bash,grep,Linux,Bash,Grep,如果第二列中的数字(用空格分隔)大于3,保持行的最佳方式是什么 我不能使用awk或sed!-- 输入: 2 2 asd 132ds 1 4 sdf 234sd 1 3 gfd 654gh 1 1 rtz 543jh 1 10 uio 654iu 输出: 1 4 sdf 234sd 1 10 uio 654iu 使用while循环: while read -r i j k; do [ "$j" -gt 3 ] && echo "$i $j $k"; done <file.
2 2 asd 132ds
1 4 sdf 234sd
1 3 gfd 654gh
1 1 rtz 543jh
1 10 uio 654iu
输出:
1 4 sdf 234sd
1 10 uio 654iu
使用
while
循环:
while read -r i j k; do [ "$j" -gt 3 ] && echo "$i $j $k"; done <file.txt
读取时-rijk;执行[“$j”-gt 3]&回显“$i$j$k”;使用grep
过滤掉不需要的需求
$ cat file
2 2 asd 132ds
1 4 sdf 234sd
1 3 gfd 654gh
1 1 rtz 543jh
1 10 uio 654iu
使用while循环
while read line; do if [ $(echo $line|cut -d " " -f2) -gt 3 ]; then echo $line; fi; done < testfile.txt
读行时;如果[$(回声$行|切割-d”“-f2)-gt 3];然后回音$line;fi;完成
我已经删除了awk和sed标记,因为您明确不想使用它们。我喜欢这个想法,但正则表达式是错误的,在任何文化中都会发现一个单独的数字1-3。更好的正则表达式是“”^[^]+[1-3]”
(引号不是正则表达式本身的一部分,但shell要求引用正则表达式)。感谢@tripleee,我没有意识到该部分也被edit修改了。我以为只有egrep
被改为grep-E
。感谢编辑<代码>:)
while read line; do if [ $(echo $line|cut -d " " -f2) -gt 3 ]; then echo $line; fi; done < testfile.txt