我正在尝试编写一个脚本,读取文件的所有行,并对grep中包含expecfy单词的行进行grep(在这种情况下,单词是apple(,但我遇到了一个问题,即grep忽略/未捕获文件的第一行。
这是我的脚本:
#!/bin/bash
while read line;
do
grep 'apple' > fruits2.txt
done < fruits.txt
输入文件";fruits.txt";
apple 1
banana
apple 2
grape
orange
apple 3
blueberry
apple 4
输出文件";fruits2.txt";
apple 2
apple 3
apple 4
因此,您正在创建一个循环,以便逐行读取整个文件,并让grep
验证该行中是否有内容。
grep
只能读取一行,这是正确的。
但是:grep
可以读取整个文件,这就是创建的目的。
所以,你不需要创建自己的循环,你只需要做:
grep "apple" fruits.txt
结果将是:
apple 1
apple 2
apple 3
apple 4
作为一个额外的:想象一下,你加上";菠萝666";到您的";fruits.txt";文件,那么您也会在输出中看到这个。如果你不想这样:
grep -w "apple" fruits.txt
(-w
表示只能显示整个单词。(