Bash Grep命令在shell脚本中不返回任何内容
当我试图提取另一个文件中匹配字符串的行时。但是grep命令不返回任何结果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
#!/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]}"