在我试图说出这个问题的时候,请光临我。
我有一个包含“.m”条目列表的文件,例如
Foo.m
Bar.m
我想用'.h'替换每个'.m',排序并保留uniques。
cat ../classes.txt | sed 's/\.m/\.h/' | sort -u
这给我的同一个列表只作为'.h'条目,即
foo.h中
Bar.h
第二部分是关于将每个导入上述标题的文件打印到stdout。
即。对于一个简单的条目,它看起来像这样
echo Foo.h | xargs -I file find Classes -name \*.m -exec grep -q 'import "file' {} \; -print
但是,当将第一个输出连接到第二个时,我在标准输出上什么都没有。
即
cat ../classes.txt | sed 's/\.m/\.h/' | sort -u | xargs -I file find Classes -name \*.m -exec grep -q 'import "file' {} \; -print
是什么给出了?
答案 0 :(得分:1)
我不确定我是否足够回答为什么你会看到你所看到的行为,但作为另一种选择,我会尝试这样的事情:
while read line; do
find Classes -iname "*.m" -exec grep -q "import \"${line}" '{}' ;\
done < ../classes.txt | sort -u
答案 1 :(得分:0)
使用@adurdin的回复,发现该命令是
{} ; -print -name *.m -exec grep -q import "Foo.h
哪个没有多大意义。 然后意识到classes.txt文件有CRLF行终止符,导致它被阻塞。
将结尾的行改为Unix格式,就像魅力一样。