簡體   English   中英

用 awk 替換字符

[英]Replace characters with awk

我有以下文件:

61 12451
61 13451
61 14451
61 15415
12 48469
12 78456
12 47845 
32 45778
32 48745
32 47845
32 52448
32 87451

我想要的輸出如下,例如,61 s 被 1 替換,因為它們是第一次出現並重復 4 次,然后第二列從 2 到 5,因為這些是成對比較,1 到 1 是被忽略,但第二列應該從 2 開始,以此類推。

1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
3 6
3 7
3 8

關於如何使用 AWK 實現這一目標的任何建議? 謝謝!

它可以用這樣的一個 awk 命令編寫

awk '{a[NR]=$1;b[NR]=$2;c[NR]=$1;d[NR]=$2} END {for(i=1; i<=NR; i++){if(i==1){c[i]=1;d[i]=2}else if(a[i]==a[i-1]){c[i]=c[i-1];d[i]=1+d[i-1]}else{c[i]=1+c[i-1];d[i]=c[i]+1}print c[i],d[i]}}' pairwise.txt > output.txt

這里 a 和 b 是讀取文件第一列和第二列的數組。 新值作為第一列和第二列存儲在數組 c 和 d 中,並打印到輸出文件中。

不確定這個單線是否有幫助:

awk '$1!=p{++i;j=i+1}{print i,j++;p=$1}' file

至少它提供了所需的輸出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM