Linux / Unix在同一行中选择特定数据

时间:2015-01-16 13:47:30

标签: linux unix awk grep

我试图通过我自己使用grep,awk,搜索以及我在Google上找到的许多其他命令来做到这一点,但它没有成功。

例如,我的test.txt包含:

aaa, bbb, 333, 222,
ccc, kkk, 222, eee,
333, ooo, qqq, 555,
333, iii, uuu, 222,

以及我需要做什么,选择在同一行中有222和333的行。 所以我应该得到:

aaa, bbb, 333, 222,
333, iii, uuu, 222,

到目前为止我尝试的是:

$ egrep -R -w '222|333' test.txt     
$ awk '/222|333/' failas

我也知道如何查找没有222或333的行

$ grep -v -e "222" -e "333"

但正如我所说,我仍然无法在同一行找到找到该特定数据的命令。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我会用awk。

$ awk '/222/ && /333/' file
aaa, bbb, 333, 222,
333, iii, uuu, 222,

OR

$ grep -P '^(?=.*\b222\b)(?=.*\b333\b)' file
aaa, bbb, 333, 222,
333, iii, uuu, 222,

答案 1 :(得分:2)

使用GNU grep:

grep 222, file | grep 333,

grep '222,.*333,\|333,.*222,' file

grep -e '222,.*333,' -e '333,.*222,' file

输出:

aaa, bbb, 333, 222,
333, iii, uuu, 222,