gpt4 book ai didi

bash - 从 grep 输出创建文件时,为什么我会得到一些额外的、奇怪的字符?

转载 作者:行者123 更新时间:2023-11-29 09:08:35 24 4
gpt4 key购买 nike

我正在执行一个非常基本的命令,过去从未给我带来麻烦,但现在莫名其妙地返回不需要的字符。

我在 linux 上的 BASH 中,只是想搜索一个目录并创建一个包含与模式匹配的文件名的文件:

ls | grep "*.file_ID" > my_list.txt

...这很好用,如果我收集数据:

   cat my_list.txt
seriesA.file_ID
seriesB.file_ID
seriesC.file_ID

但是,当我尝试将此文件提供给下游进程时,我不断收到奇怪的错误,就好像该文件没有正确格式化为文件名列表一样。当我在 vim 中打开文件以显示任何不必要的字符时,我发现文件实际上看起来像这样:

vi my_list.txt

^[[00mseriesA.file_ID^[[00m
^[[00mseriesB.file_ID^[[00m
^[[00mseriesC.file_ID^[[00m

出于某种原因,每一行都以字符 ^[[00m 开始和结束。如果我删除这些字符,所有下游进程都可以正常工作。但是,我需要让我的脚本自动生成这样的文件列表,所以我不能继续手动删除这些字符。

有人知道是什么产生了 ^[[00m 字符吗?我不知道它们来自哪里,需要一个能够在没有它们的情况下生成文件。

谢谢!

最佳答案

可能您的 GREP_OPTIONS 环境变量包含 --color=always,这会导致输出中充满控制字符,即使在通过管道传输到文件时也是如此。

改用--color=auto

http://www.gnu.org/software/grep/manual/html_node/Environment-Variables.html

更好的是,不要使用 grep:

ls *.file_ID > my_list.txt

关于bash - 从 grep 输出创建文件时,为什么我会得到一些额外的、奇怪的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684228/

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