我尝试从文件中检索一行而不使用循环 .
myFile.txt
val1;a;b;c
val2;b;d;e
val3;c;r;f
我想得到第二列是 b
的行 .
如果我做 grep "b" myFile.txt
那么第一行和第二行都将被输出 .
如果我做 cat myFile.txt | cut -d ';' -f2 | grep "b"
那么输出将只是 b
而我想得到整行 val2;b;d;e
.
有没有办法达到预期的结果而不使用如下的循环?我的文件很大,不会一次又一次地循环它 .
while read line; do
if [ `echo $line | cut -d ';' -f2` = "b" ]; then
echo $line
fi
done < myFile.txt
2 回答
使用:
grep
:sed
:两者的输出相同:
鉴于您的输入文件,下面的单行应该工作:
awk -F";" '$2 == "b" {print}' myFile.txt
说明: