首页 > 代码库 > grep相关的问题
grep相关的问题
假若目前有一个windows下拷贝过来的文件 favorite_songs(喜欢的歌曲单,内部是 CRLF 结尾的),现在还有一个文件 music_list(内部包含所有歌曲的路径,非 CRLF 结尾),现在想将所有的 favorite songs 拷贝到一个单独的 favorite_dir 目录。可以使用下面的命令来完成:$cat favorite_songs | xargs -i grep {} music_list | xargs -i cp {} favorite_dir,但是运行时不会得到你所期望的结果,仔细调试便会发现 CRLF 在搞鬼,将其转换成 unix 下的 LF 结尾即可,转换的方法可以使用如下三种中的一种:
1. 使用命令dos2unix和unix2dos
2. 用vim打开输入命令::% s/\r//g
3. tr -d ‘\r‘ < dos-file.txt > UNIX-file.txt
此需求另外需要注意的问题是,windows下的文件名好多都包含空格的,可以使用 tr 命令将其转换为下划线以方便处理;另一个问题是 xargs 处理包含引号的文件名时也会出现问题,可以加 -0 参数,或者使用 $cat file | while read 的方式,或者彻底一点使用 tr 将文件改名。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。