我有一个输入文件:
public String makeBitmapPath(Bitmap bmp){
// TimeStamp
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String path = Environment.getExternalStorageDirectory().toString();
OutputStream fOut = null;
File file = new File(path, "Photo"+ timeStamp +".jpg"); // the File to save to
try {
fOut = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close(); // do not forget to close the stream
MediaStore.Images.Media.insertImage(getContentResolver(),file.getAbsolutePath(),file.getName(),file.getName());
} catch (IOException e){
// whatever
}
return file.getPath();
}
第一列指定一个组,第二列指定该组的某些值。
我想检查每个组的值顺序是否相同。
例如,A组的值为23,45,32,61,78。对于B组,值的顺序相同。但是在C组中,违反了该顺序(以粗体显示),因此输出应该只是“假”。
如果是C组,也会遵循值的顺序,输出将为“true”。
请注意,第一列中的组都是唯一的,没有重复的组。
答案 0 :(得分:2)
!f { a[++i] = $2 } # save first sequence
NR>1 && $1!=p { f=1; i=1 } # set flag and reset index on new sequence
{ p=$1 } # save value of first column
f && a[i++]!=$2 { m=1; exit } # if number not in sequence, set m and exit early
END { print m?"false":"true" } # print false or true, depending on m
像awk -f script.awk file
答案 1 :(得分:1)
此awk
应该有效:
awk '$1 != p {
if (!grp1 && grp)
grp1 = grp;
if (grp != grp1) {
print p " - false";
done = 1;
exit
};
grp = "";
p = $1
}
{
grp = grp ":" $2
}
END {
if (!done && grp != grp1)
print p " - false"
}' file
打印:
C - false
答案 2 :(得分:1)
另一种解决方案:
NR == 1 {
initial = $1
returnVal = ""
}
{
if (initial == $1) {
array[++i] = $2
} else {
if (anchor != $1)
ix = 0
anchor = $1
if (array[++ix] != $2) {
returnVal = 1
}
}
}
END {
print (returnVal) ? "false" : "true" ;
}