我需要遍历文本文件的多行并重定向到另一个文本文件。
我设法做了以下事情:
for i in $(seq 1 24)
awk 'NR==1 {print $4 $5 $6}' 3dfwhmx.txt > values.txt
values='cat*values.txt'
3dClust -fwhmxyz ${values}
done
但是,这仅针对first row
,4,5,6th column
。我需要使用i
索引才能解决1st, 2nd, 3rd etc row
问题。
我需要为i的每次迭代创建一个值向量。
我尝试了几件事,例如;
awk 'NR=='$i' {print $4 $5 $6}' 3dfwhmx.txt > values.txt
但它不起作用。我真的很感激任何反馈!
答案 0 :(得分:1)
你需要遍历它并为每一行调用awk吗?
为什么不
awk '{print $4}' 3dfwhmx.txt > values.txt
或更改您的引号以允许shell替换
awk "NR==$i {print $4}" 3dfwhmx.txt > values.txt
答案 1 :(得分:0)
您不需要围绕awk
循环。
awk 'NR<=24{print $4}' 3dfwhmx.txt > values.txt
将为您提供前24行作为循环逻辑。
使用更新的问题,您也不需要临时文件。
for i in $(seq 1 24); do
values=$(awk -v i=$i 'NR==i {print $4 $5 $6}' 3dfwhmx.txt)
3dClust -fwhmxyz ${values}
done
根据3dClust
的工作原理,您可以使用管道简单地将`awk&#39输出重定向到其标准输入。