1
分配ID於每行我有一個列,它是通過比較每個復發例如通過柱值在AWK
toto tata AFG
fff ddd AFG
ff hhh AWM
qqq ttt AWM
我想有像
toto tata AFG 1
fff ddd AFG 1
ff hhh AWM 2
qqq ttt AWM 2
的輸出的表格文件使用第四列到下一行
使用awk可以快速執行嗎?
thx求助
分配ID於每行我有一個列,它是通過比較每個復發例如通過柱值在AWK
toto tata AFG
fff ddd AFG
ff hhh AWM
qqq ttt AWM
我想有像
toto tata AFG 1
fff ddd AFG 1
ff hhh AWM 2
qqq ttt AWM 2
的輸出的表格文件使用第四列到下一行
使用awk可以快速執行嗎?
thx求助
awk '$3 != current {id++; current=$3} {print $0, id}'
將輸入放入文件中。
$> cat ./text
toto tata AFG
fff ddd AFG
ff hhh AWM
qqq ttt AWM
對於每一行,我們應該記住$ 3-st值並檢查它是否與前一個值相等。如果這是真的 - 我們應該增加迭代器。
awk '
BEGIN {
prevValue = "";
value = "";
iterator = 0;
}
{
prevValue = value;
value = $3;
if (value != prevValue)
iterator++;
printf $0 " " iterator "\n"
}' ./text
所以我們得到的是這個
toto tata AFG 1
fff ddd AFG 1
ff hhh AWM 2
qqq ttt AWM 2
UPD: 像喬納森·萊弗勒說,最初的部分是不是真的有必要在這裏。因此,另一種可行的解決方案是:
awk '
{
prevValue = value
value = $3
if (value != prevValue)
iterator++
print $0, iterator
}' ./text
+1:這是相當冗長;初始化部分可以被假定(你明確地做了'awk'確實隱含的)。 – 2012-03-06 20:50:08