Bash Grep命令在shell脚本中不返回任何内容

Bash Grep命令在shell脚本中不返回任何内容,bash,unix,grep,Bash,Unix,Grep,当我试图提取另一个文件中匹配字符串的行时。但是grep命令不返回任何结果 #!/bin/bash input="export.txt" file="filename.csv" val=`head -n 1 $file` echo $val>export.csv cat export.txt | while read line do val=`echo $line | tr -d '\n'` echo $val valu=`grep $val $file` echo $valu d

当我试图提取另一个文件中匹配字符串的行时。但是grep命令不返回任何结果

#!/bin/bash
input="export.txt"
file="filename.csv"
val=`head -n 1 $file`
echo $val>export.csv
cat export.txt | while read line 
do
   val=`echo $line | tr -d '\n'`
echo $val
valu=`grep $val $file`
 echo $valu
done



您可以简单地执行以下操作:

grep -f list.txt input.txt
它将从输入中提取与list.txt中的任何单词匹配的所有行

如果出于某种原因希望保存每个匹配项,可以在Bash数组中执行以下操作:

IFS=$'\n' read -d '' -a values <<< "$( grep -f list.txt input.txt )"

问候

请不要使用反勾号,它们是不被鼓励的。改用
$(…)
。所以只需执行
grep-f export.txt filename.csv
?我使用了$(…)。但这也没有帮助我当前方法存在许多问题。如@KamilCuk所说,这里列出的文件太多,请使用
grep-f export.txt filename.csv
然后向我们显示文件内容和预期输出。几行就够了。使用此信息更新您的问题,我们将查看。e、 g.查看您的数据可能需要清理。尝试
dos2unix$文件;dos2unix export.txt
,看看这是否有帮助。Good luck.OP在评论中表示,这种方法不起作用。正在等待一些示例数据。。。
echo "${values[1]}"