Linux Bash:如果第二列中的数字大于3,如何保持行?

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.

如果第二列中的数字(用空格分隔)大于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.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