我有多个名称为
的csv文件 VAR1_VAR2_VAR3_VAR4.csv
所有文件在更改值时都具有相同的结构。 我试图通过每次修复一个或多个VAR来检索这些文件中的数据。 我试着编写一个脚本,但我有两个问题:
1-因为所有文件都具有相同的结构,所以我确切地知道所有字段,我想根据行号和列号检索数据(即$(R1,C4))。是不是可以这样做?
2-当我修改一个变量(即* _VAR2_VAR3_VAR4.csv)时VAR1有3个条目如何在循环中迭代这个变量?
我的剧本在这里(我的第一个试探性的)
#!/bin/bash
#OLDFIS=$IFS
#IFS=","
awk -F "," '
#-------------------------- Table 1 ----------------------- -------#
BEGIN {
print"=========================================================="
printf"%-8s %-8s %-8s %-8s %-8s\n","Network size", "P_Energy", "E_Energy",
"All_energy","Latency"
print"=========================================================="
}
{printf "%-8d %-8d %-8d %-8d %-8d\n",$VAR1, $(R3,C3) ,$(R4,C4) ,$(R5,C5),$(R6,C6)
,$(R7,C7)}' /home/jhon/Desktop/Simulator/results/*_VAR2_VAR3_VAR4.csv
#-----------------------------------------------------------------------------#
在这个例子中,我想修复VAR1,这将是我输出中的第一列。其他人提交我知道他们在文件中的坐标。
编辑1:
对于我的第一个问题,我将代码更改为:
NR == 3 {printf“%-20s”,$ 1} NR == 25 {printf“%-20s”,$ 2} NR == 12 {printf“%-20s”,$ 2}
NR == 29 {printf“%-20s”,$ 2} NR == 49 {printf“%-20s”,$ 4}'/... PATH/simStats_P-
Mesh__random_16384_1E-4_16.csv> test.txt
我得到了理想的输出:
===================================================================================
Network size P_Energy E_Energy All_energy Latency
=====================================================================================
0.0402597 0.00767312 0.0479328 0.294311
编辑2: 我现在通过使用FNR代替FN
获得所有值对于第一行我放假值。知道如何根据名称添加循环来解析文件吗?
答案 0 :(得分:0)
我使用了与awk的分割,我手动输入了我想要在第一列中显示的参数的数量。
awk -F "," '
FNR==1 {nb_param=split(FILENAME,param,"[_.]"); printf "%5s", param[7] }
FNR==25 {printf "%20s", $2 }
FNR==12 {printf "%20s", $2 }
FNR==29 {printf "%20s", $2 }
FNR==49 {printf "%20s\n\n", $4 }' *.csv