【发布时间】:2016-12-09 13:31:18
【问题描述】:
我知道以前有人问过这个问题。但是,这些示例似乎都不适合我。因此: 我有所有类型的文件 XXXX1.txt XXXX2.txt XXXX3.txt ... XXXX9.txt 在同一目录中。
现在我想使用 bash 从每个文件中 grep 某个值:
for file in *$i.txt
do
for ((i = 1; i < 10; i++))
do
grep "energy" *.txt >> energies.txt
done
done
代码和 grep 工作正常,没有任何错误,但我总是从第一次迭代中得到 grep,第一次能量打印了 9 次。它从不看其他人。我知道这种循环在 bash 中很复杂。但是,请不要建议将所有文件移动到单独的目录中并循环访问它们。
【问题讨论】:
-
对于每个
*$i.txt匹配的文件(无论$i是什么),您对匹配*.txt的所有 文件运行grep九次。你的意思是grep "energy" "$file"吗?但是为什么要使用两个循环呢?!为什么不只是grep "energy" XXXX*.txt? -
如果在循环内部定义
$i,则不能在循环开头使用... -
我认为这个问题需要澄清很多才能回答。真正的目标是什么?
$i的值是多少?文件名是什么?外环有什么用?内循环有什么用?数字 9 有什么神奇之处?