Bash

grep大文件的腳本

  • February 11, 2020

我有一個大約 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 none 似乎解決了這個問題。

我可以:

[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]#

從您的“貓”中獲取副本,我可以使用以下命令產生預期的結果:

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

我希望這有幫助。

引用自:https://serverfault.com/questions/1002530