我得到了一些问题,这些基本数据:AWK - 在下一条记录上使用GETLINE?
DP;DG
67;
;10
;14
;14
;18
;18
;22
;65;x
68;
;0
;9
;25
;25;x
70;
的“X”值来如果在下一行$ 1:
DP;DG
67;
;10
;14
;14
;18
;18
;22
;65
68;
;0
;9
;25
;25
70;
,我想在这种输出的变换存在或者如果$ 2为空。根据我的理解,我必须使用getline,但是我不明白! 我试过以下代码:
#!/bin/bash
file2=tmp.csv
file3=fin.csv
awk 'BEGIN {FS=OFS=";"}
{
print $0;
getline;
if($2="") {print $0";x"}
else {print $0}
}' $file2 > $file3
看起来很简单。我没有提到结果,与我的期望完全不同。
一些线索? getline是否需要解决这个问题?
OK,我继续测试一些代码:
#!/bin/bash
file2=tmp.csv
file3=fin.csv
awk 'BEGIN {FS=OFS=";"}
{
getline var
if (var ~ /.*;$/) {
print $0";x";
print var;
}
else {
print $0;
print var;
}
}' $file2 > $file3
这是相当好了,不过,这应标明所有的线条都没有...我不知道为什么...
'从我的理解中,我必须使用getline'。不,读有效AWK编程,第4版,由阿诺德·罗宾斯学习如何用awk和阅读http://awk.freeshell.org/AllAboutGetline学习几次它是适合使用函数getline和所有的注意事项和理由不至。 –