我有一個這樣的輸入文件:我怎麼算多個重疊的串並獲得每行的總出現次數(AWK或者別的什麼)
315secondbin x12121321211332123x
315firstbin 3212212121x
315thirdbin 132221312
316firstbin 121
316secondbin 1212
我想做的是統計的多少實例幾行不同的字符串(比如說「121」和「212」)存在於每行計數重疊中。所以,我的預期產出將是:
6
5
0
1
2
所以我稍微修改從另一個線程一些awk來使用OR運算符,希望它將計數滿足任一條件的一切:
{
count = 0
$0 = tolower($0)
while (length() > 0) {
m = match($0, /212/ || /121/)
if (m == 0)
break
count++
$0 = substr($0, m + 1)
}
print count
}
不幸的是,我的輸出是這樣的:
8
4
0
2
3
但是,如果我忽略了OR,它會完美計數。我究竟做錯了什麼?
而且,我通過運行在文件中運行ymaz.txt腳本:
cat ymaz.txt | awk -v "pattern=" -f count3.awk
作爲一種替代方法我試過這樣:
{
count = 0
$0 = tolower($0)
while (length() > 0) {
m = match($0, /212/)
y = match($0, /121/)
if ((m == 0) && (y == 0))
break
count++
$0 = substr($0, (m + 1) + (y + 1))
}
print count
}
,但我的輸出是這樣的:
1
1
0
1
1
我在做什麼錯?我知道我應該理解代碼,而不是剪切和粘貼在一起,但這是我的技能水平。
順便說一句,當我沒有在那裏的OR(即我只是尋找1字符串)它完美的作品。
不是應該'/(212)|(121)/'? – ooga
我在第一行計6場比賽。 – ooga
和第二個5!你應該將其作爲回答@ooga發佈! –