如果您能提供有关如何在UNIX命令行中运行以下命令的任何建议,我将不胜感激。本质上,每个主题都有文本文件,如下所示(模拟数据)。
2.97 3.61 -1.88
-0.38 2.33 -0.22
0.76 -0.71 -0.97
主题ID包含在文本文件标题中(例如'100012_var.txt')
我想编写一个.csv文件,其中一行中的每个值(针对每个主题)出现在新的变量标题下。例如:
ID Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9
100012 2.97 3.61 -1.88 -0.38 2.33 -0.22 0.76 -0.71 -0.97
100013 -1.21 1.79 -0.88 -0.91 2.01 2.88 0.32 -1.15 2.70
我还想确保所有主题之间的一致性,即第1行中的值1始终编码为VAR 1。
我真的很感谢任何建议!
使用awk:
$ awk -v RS="" -v OFS="\t" ' # using whole file as a record *
NR==1 { # first record, build the header
printf "ID" OFS
for(i=1;i<=NF;i++)
printf "Var%d%s",i,(i<NF?OFS:ORS)
}
{
split(FILENAME,f,"_") # split filename by _ to get the number
$1=$1 # rebuild the record to use tabs (OFS)
print f[1],$0 # print number part and the values
}' 100012_var.txt 100013_var.txt # them files
输出:
ID Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9
100012 2.97 3.61 -1.88 -0.38 2.33 -0.22 0.76 -0.71 -0.97
100013 -1.21 1.79 -0.88 -0.91 2.01 2.88 0.32 -1.15 2.70
*这里-v RS=""
解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句