如何从sed输出中删除不可见字符到文件[重复]
Posted
技术标签:
【中文标题】如何从sed输出中删除不可见字符到文件[重复]【英文标题】:How to remove non visible characters from sed output to a file [duplicate] 【发布时间】:2021-08-31 13:58:09 【问题描述】:我正在尝试列出另一个目录中的所有目录并使用 sed 将其放入文件中。
使用的命令:
ls -ld <directory path>/* | sed 's/^.*\(what.*\).*\//\1/'
它在终端上打印的内容:
what_111
what_222
当我将它放到文件中时,我看到的是:不可见的字符被放入文件中。
what_111^[[0m^[[K
what_222^[[0m^[[K
如何在放入文件时从 sed 输出中删除它们?任何 cmets 都会有所帮助。
【问题讨论】:
superuser.com/questions/380772/… 是的,它确实可以使用以下命令:ls -ldls
然后去掉颜色?只是不要使用 ls.... 你在问 XY 问题。
on the text file
不,ls
输出。 filename 本身是否包含不可打印的字符或ls
是否输出它们? When I put it onto a file
你如何“把它放到一个文件中”? Un-visible characters getting put onto file.
如何检查文件内容?
I see 你几乎从不接受答案。请阅读***.com/help/someone-answers。
【参考方案1】:
您似乎开始走错了路(尝试解析 ls
的输出,我敢打赌,ls
别名为 ls --color
)然后尝试添加代码来解决问题你这样做造成的。要列出目录下的目录名称,只需这样做:
find /path/to/directory -maxdepth 1 -type d -printf '%P\n'
【讨论】:
【参考方案2】:我正在尝试列出另一个目录中的所有目录并使用 sed 将其放入文件中。
sed
无法做到这一点 - sed 是“流编辑器”,它不能列出目录。
Do not parse ls..
find
目录。
find another_directory/ -maxdepth 1 -mindepth 1 -type d > a_file
【讨论】:
但是上面的这个命令会打印目录的整个路径。我只想在另一个目录中单独打印目录的名称[不是完整的分层路径],也不是在另一个目录中打印所有子目录。find ... -printf '%f\n'
见man find
。或find ... | sed 's~.*/~~'
。或cd another_directory; find . .... | cut -c3-
试过.. 喜欢.. find 尝试结合上面的一些响应并使其正常工作。以下是我尝试过的命令及其工作。
find <directory path> -maxdepth 1 -type d | sed 's/^.*\(test.*\)/\1/g' |tail -n +2 > file_list.txt
【讨论】:
以上是关于如何从sed输出中删除不可见字符到文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过 Bash 从文本文件中删除空行,包括空格字符 [重复]