使用 Bash For 循环搜索文件中的唯一行
我有一个带有文件名列表的文件 sortedfile.txt
。我正在搜索另一个文件 ngfilelist.txt,其中包含 sortedfile.txt
中所有重复文件的文件列表。
我正在使用这个命令,
for X in `uniq -d ~/Desktop/sortedfiles.txt`; do grep "$X" ~/Desktop/ngfilelist.txt; done
我应该纠正什么?
I have a file sortedfile.txt
with a list of file names. I am looking to search another file , ngfilelist.txt
containing a file list for all duplicates files in sortedfile.txt
.
I am using this command
for X in `uniq -d ~/Desktop/sortedfiles.txt`; do grep "$X" ~/Desktop/ngfilelist.txt; done
What should I correct in this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会做这样的事情:
我发现使用 xargs 为每行运行
grep
更容易,而不是使用for
循环sortedfiles.txt
与ngfilelist.txt
对比。输出是在两个文件中找到的文件名的列表。请注意,
^
和$
仅用于匹配完整的文件名,因为部分匹配可能不会被视为问题的有效结果。I'd do something like this:
Instead of using a
for
loop, I find easier to usexargs
to run agrep
for every line insortedfiles.txt
againstngfilelist.txt
. The output is a list the file names found in both files.Note that
^
and$
are used to match only complete file names since probably partial matches aren't considered as valid results to your problem.这可能对你有用:
This might work for you: