0
我有數據,看起來像這樣:的Linux awk的列比較
0 1 0 0
0 0 0 1
0 0 0 1
0 1 0 0
我想打印用ls所有直接後續行同一列,用awk。我將如何做到這一點?
編輯:
有AWK內無法指定前一列,像「1-1 $」(我知道那不對BTW)?
我有數據,看起來像這樣:的Linux awk的列比較
0 1 0 0
0 0 0 1
0 0 0 1
0 1 0 0
我想打印用ls所有直接後續行同一列,用awk。我將如何做到這一點?
編輯:
有AWK內無法指定前一列,像「1-1 $」(我知道那不對BTW)?
我假設每行都有精確的一個1
。 進一步假設您的數據在data.input中。
用法:
awk -f foo.awk data.input
foo.awk:
function printBlock() {
for(i=0; i<N; i++) {
print BLOCK[i];
}
}
{
for(col=1; col<=NF; col++) {
if($col==1) break;
}
if(col != last_col) {
if(N > 1) {
printBlock()
}
N = 0
}
BLOCK[N++] = $0;
last_col = col;
}
END {
if(N > 1) {
printBlock()
}
}
這是過於簡單化,但它會與您的樣本數據的工作:
awk '$0 == prev {print} {prev = $0}' inputfile
如果你想要打印兩行(哪個是相同的):
awk '$0 == prev {print; print} {prev = $0}' inputfile
或
awk '$0 == prev {print prev; print} {prev = $0}' inputfile
商店上一行的數組中的值。 – tripleee 2012-08-01 18:03:02
通過你的問題陳述,最後一行不應該被打印;那是對的嗎? – tripleee 2012-08-01 18:04:55
應該打印的唯一行是第2行和第3行。 – 2012-08-01 18:17:13