tol*_*boy 1 iteration bash for-loop
我有两个文件numbers.txt(1 \n 2 \n 3 \n 4 \n 5 \n)和alpha.txt(a \nn \nc \nd \ne \n)
现在我想同时迭代这两个文件.
for num in `cat numbers.txt` && alpha in `cat alpha.txt`
do
echo $num "blah" $alpha
done
Run Code Online (Sandbox Code Playgroud)
或者我的其他想法是
for num in `cat numbers.txt`
do
for alpha in `cat alpha.txt`
do
echo $num 'and' $alpha
break
done
done
Run Code Online (Sandbox Code Playgroud)
但是这种代码总是采用$ alpha的第一个值.
我希望我的问题很清楚.
提前致谢.
这就是我实际打算做的事情.(这只是一个例子)
我还有一个文件说template.txt有内容.
variable1= NUMBER
variable2= ALPHA
Run Code Online (Sandbox Code Playgroud)
我想从两个文件中获取输出,即numbers.txt和alpha.txt(一次两行),并希望将NUMBER和ALPHA替换为这两个文件中的相应内容.
所以这就是我所做的,因为我知道如何将两个文件一起迭代.
paste number.txt alpha.txt | while read num alpha
do
cp template.txt temp.txt
sed -i "{s/NUMBER/$num/g}" temp.txt
sed -i "{s/ALPHA/$alpha/g}" temp.txt
cat temp.txt >> final.txt
done
Run Code Online (Sandbox Code Playgroud)
现在我在final.txt中所拥有的是:
variable1= 1
variable2= a
variable1= 2
variable2= b
variable1= 3
variable2= c
variable1= 4
variable2= d
variable1= 5
variable2= e
variable1= 6
variable2= f
variable1= 7
variable2= g
variable1= 8
variable2= h
variable1= 9
variable2= i
variable1= 10
variable2= j
Run Code Online (Sandbox Code Playgroud)
它非常简单和愚蠢的方法.我想知道有没有其他方法可以做到这一点?
任何建议将不胜感激.
不,你的问题不够明确.具体来说,您希望迭代文件的方式尚不清楚,但假设您想要输出如下:
1 blah a
2 blah b
3 blah c
4 blah d
5 blah e
Run Code Online (Sandbox Code Playgroud)
您可以使用该paste实用程序,如下所示:
paste number.txt alpha.txt | while read alpha num ; do
echo "$num and $alpha"
done
Run Code Online (Sandbox Code Playgroud)
甚至:
paste -d@ alpha num | sed 's/@/ blah /'
Run Code Online (Sandbox Code Playgroud)