如何在grep命令中使用从文件中读取的行

Muj*_*jan 0 linux bash shell scripting

首先,我很抱歉我的英语不好.我想读取一个文件(tel.txt),其中包含许多电话号码(每行一个数字),并使用该行grep命令搜索源文件中的特定号码(另一个文件)!

我写了这段代码:

dir="/home/mujan/Desktop/data/ADSL_CDR_Text_Parts_A"
file="$dir/tel.txt"
datafile="$dir/ADSL_CDR_Like_Tct4_From_960501_to_97501_Part0.txt"

while IFS= read -r line
do
    current="$line"
    echo `grep -F $current "$datafile" >> output.txt`
done < $file
Run Code Online (Sandbox Code Playgroud)

tel文件样本:

44001547
44001478
55421487
Run Code Online (Sandbox Code Playgroud)

但那段代码什么都没有!当我用文字声明'current'变量时,它可以正常工作!发生了什么?!

tri*_*eee 6

您的grep命令被重定向以将其输出写入文件,因此您在终端上看不到它.

无论如何,你应该使用更简单,更快捷的方式

grep -Ff "$file" "$datafile"
Run Code Online (Sandbox Code Playgroud)

| tee -a output.txt如果要将输出保存到文件并同时查看,请添加.

echo `command`写作是一种错误且低效的方式command.(echo "`command`"只会效率低下.)没有理由将标准输出捕获到字符串中,以便您可以echo将该字符串转换为标准输出.