Loading... 周五晚上,研发同事突然发现线上环境中的客户数据出现异常,对于redis中的resource_info中的部分field需要进行删除。 ![2024-01-08T02:03:22.png][1] 当看到研发同事一个一个进行删除的时候,与他们进行讨论,为啥要一个一个删呢,可以写个脚本进行删除呢。 问同事要来了json文件,而需要删除的field是其中的一个字段。 整理好后,通过vim打开文件并将开头结尾的引号以及结尾的分号删除掉,然后使用命令和管道 ``` cat xx.txt | xargs -i redis-cli -c -h xxx -p port -a password HDEL resource_info {} ``` 没想到报了一堆0 ![2024-01-08T02:06:22.png][2] 时间紧,于是打开xx.txt,在每行开头加入命令`resis-cli -c -h ...` 没想到还是报错 ![2024-01-08T02:07:34.png][3] 难道是执行太快了,于是在每行命令结尾加上`;sleep 2` 没想到redis命令返回了1,但是报了其他的错误 ![2024-01-08T02:08:17.png][4] 需求满足了,但是为啥报错呢? 后来想了下,原来同事是在windows里面生成的json文件,这个文件每行结尾是`\r\n`,而在linux里面会把`\n`作为结尾,`\r`也会当做命令字符一并加入到字符串中,也就是为啥报`sleep: 无效的时间间隔"2\r"`,也是为啥开始使用cat 和 xargs并用管道连接的时候报错了。 [1]: https://www.sddts.cn/usr/uploads/2024/01/2691161013.png [2]: https://www.sddts.cn/usr/uploads/2024/01/1952438318.png [3]: https://www.sddts.cn/usr/uploads/2024/01/759641031.png [4]: https://www.sddts.cn/usr/uploads/2024/01/1664653757.png 最后修改:2024 年 05 月 11 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏