[英]shell script grep only working on last line of file
我有一个从未遇到过的非常奇怪的问题,在这里找不到其他文章的任何相关内容,我有一个shell脚本,它只是在一个while循环中抓取了一个测试主机文件(一旦工作就将使用真实的主机文件),但是它将只输出最后一行:
#!/bin/bash
while read line
do
grep $line /etc/test/hosts
done < temp-file.txt
这是/ etc / test / hosts文件:
设备1 192.168.0.1
设备2 192.168.0.2
设备3 192.168.0.3
//切
设备50 192.168.0.50
temp-file.txt与用于测试的测试主机文件相同
如前所述,这是输出-仅显示最后一行:device3 192.168.0.50
如果我将grep
命令更改为只echo $line
它将正确输出。 我尝试将测试主机文件中的行数更改为越来越少但结果相同。 我还从cli完成了grep
命令,它在我grep
使用的每个设备上都能正常工作。 我也尝试过将$ line用双引号引起来,但这也没有任何改变。
我也尝试了使用while IFS="\\n"
方法的替代while循环,但结果相同。 这似乎应该非常简单,但是我遇到了问题。 我是在做错什么,还是bash中的错误?
埃里克·雷诺夫(Eric Renouf)通过评论回答的问题。
解:
将sed -i 's/\\r$//'
//'temp-file.txt添加到脚本顶部,以删除每行末尾的\\ r。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.