我在多个子目录中有文本文件
一些/路径/一个/文件
一些/路径/两个/文件
一些/路径/三个/文件
一些/路径/foo/文件
...
我需要能够 grep 文件进行匹配,但保留单独的行返回,以便以后可以使用循环单独操作每个匹配。
我有:
SITE=$(grep -w $1 some/path/*/file)
然而,这只会产生一个非常长的字符串,所有内容都只是在一行中平滑在一起。
理想情况下,此变量将包含每行路径名中 * 的值:
例如:
一些/路径/一个/文件
一些/路径/三个/文件
包含其中包含的行bar
。
SITE=$(grep -w bar some/path/*/file)
echo $SITE
应该是这样的:
some/path/one/file:this is a line of text that has bar in it
some/path/three/file:this is a line of text that has bar in it
但相反,我得到了这个:
some/path/one/file:this is a line of text that has bar in it some/path/three/file:this is a line of text that has bar in it
有没有办法让这个变量多行,以便以后我可以做类似的事情:
for i in `echo $SITE`; do
WHATEVER=$(echo $i | cut -d ':' -f 1 | cut -d '/' -f 3)
echo $WHATEVER
done
并使输出为:
one
three
或者我会以完全错误的方式解决这个问题?