gpt4 book ai didi

linux - shell 脚本 grep 只处理文件的最后一行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:36 26 4
gpt4 key购买 nike

我有一个非常奇怪的问题,我从来没有遇到过,在这里的其他帖子上找不到任何相关的东西,我有一个 shell 脚本,它只是在一个 while 循环中 greps 一个测试主机文件(一旦这个工作就会使用真实的文件)但它只会输出最后一行:

#!/bin/bash
while read line
do
grep $line /etc/test/hosts
done < temp-file.txt

这是/etc/test/hosts 文件:

device1 192.168.0.1
device2 192.168.0.2
device3 192.168.0.3
// cut
device50 192.168.0.50

temp-file.txt 与用于测试的测试主机文件相同

如前所述,这里是输出——只显示最后一行:设备 3 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。

关于linux - shell 脚本 grep 只处理文件的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30856988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com