>cat tmp1
1
2
3
>cat tmp2
vol1
vol2
期待这个答案
vol1 1
vol1 2
vol1 3
vol2 1
vol2 2
vol2 3
答案 0 :(得分:1)
如果行的顺序不那么重要
awk 'FNR==NR{a[$0];next}{for(i in a){print $0,i}}' tmp2 tmp1
如果您想恢复订单:
awk 'FNR==NR{a[FNR]=$0;l=FNR;next}{for(i=1;i<=l;i++){print $0,a[i]}}' tmp2 tmp1
答案 1 :(得分:1)
$ while read a; do while read b; do echo $a $b; done<tmp1; done<tmp2
vol1 1
vol1 2
vol1 3
vol2 1
vol2 2
vol2 3
或者有更好的缩进:
while read a; do
while read b; do
echo $a $b
done <tmp1
done <tmp2
对于tmp2
文件中的每个单词,请回显tmp1
文件中的每个单词。
如果两个文件中的实际数据包含反斜杠,或者tmp2
文件在第一列中包含破折号,那么以下内容将是更好,更强大的解决方案:< / p>
while read -r a; do
while read -r b; do
printf '%s %s\n' "$a" "$b"
done <tmp1
done <tmp2
答案 2 :(得分:0)
刚刚找到了办法,
for file in `cat tmp1`
do
for f in `cat tmp2`
do
echo $file $f
done
done