用于 grep 大文件的脚本

用于 grep 大文件的脚本

我有一个文件有大约 63000 行,我需要 grep

[root@server]# cat missinglinks.txt
69870  1.pdf.Published
125098 2.png.Published
125022 3.pdf.Published
69867  4.png.Published

我有一份包含 450 个数字的列表,这些数字与 missinglinks.txt 文件中的某些行匹配

[root@server]# cat missinglinksA.sh
125105
125104
125103
125102
125100
125099
125098
125097
125022

我正在尝试使用脚本从 missinglinksA.sh 和 grep missinglinks.txt 中取出第一行并输出到文件,然后取出第二行,n.....

for n in $(cat missinglinksA.txt)
do
    cat missinglinks.txt | grep $n
done

我想要一个像这样的输出文件:

[root@server]# cat missinglinksAout.txt
125098 2.png.Published
125022 3.pdf.Published

但是,我无法在屏幕上或文本文件中获得输出,我不确定我是否做错了什么或者脚本是否根本没有输出。

我有 -o -i 似乎都无法解决这个问题。

我可以:

[root@server]# cat missinglinksA.txt | grep 125098 >> missinglinksAout.txt

并且它有效。

[root@server]# cat missinglinksAout.txt
125098 2.png.Published

我从 missinglinksA.txt 文件中取出了前 10 行,并编​​写了一个脚本来检查每一行,但这也不起作用,输出为空白。

[root@server]# cat missinglinksAtesteachline.sh
cat missinglinksA.txt | grep 125105
cat missinglinksA.txt | grep 125104
cat missinglinksA.txt | grep 125103
cat missinglinksA.txt | grep 125102
cat missinglinksA.txt | grep 125100
cat missinglinksA.txt | grep 125099
cat missinglinksA.txt | grep 125098
cat missinglinksA.txt | grep 125097
cat missinglinksA.txt | grep 125022

[root@server]# sh missinglinksAtesteachline.sh
[root@server]#

答案1

从您的“猫”中获取副本后,我可以使用以下命令获得预期的结果:

$ fgrep -f missingLinksA.txt missingLinks.txt 
125098 2.png.Published
125022 3.pdf.Published

我希望这有帮助。

相关内容