field5 以上の単語で 1 の位置 (コロンの後の 1 のみを考慮) を表すにはどうすればよいですか? 右から左に数えます。
入力:
TT-124 06-03-14 08-02-10 FAS CAT1:10
TT-125-1 05-03-14 10-06-08 CAS CAT2:1010 FAT1:10000
TT-125-3 07-03-14 11-02-06 FAS FAT1:1101
SS-120-1 05-03-14 09-04-07 FAS CAT3:100000
AA-121-0 06-03-14 08-03-06 CAS FAT2:11 CAT1:101100
出力:
TT-124 06-03-14 08-02-10 FAS CAT1:1
TT-125-1 05-03-14 10-06-08 CAS CAT2:3 CAT2:1 FAT1:4
TT-125-3 07-03-14 11-02-06 FAS FAT1:0 FAT1:2 FAT1:3
SS-120-1 05-03-14 09-04-07 FAS CAT3:5
AA-121-0 06-03-14 08-03-06 CAS FAT2:0 FAT2:1 CAT1:2 CAT1:3 CAT1:5
cygwin で動作する以下のスクリプト (誰かの提案による) を試しましたが、nawk または /usr/xpg4/bin/awk を使用して Solaris 10 では動作しません。solaris で実装するにはどうすればよいですか?
awk '{for(i = 5; i <= NF; i++) {split($i, a, ":"); $i = ""; split(a[2], b, "");
for(j = 1; j <= length(b); j++) {if(b[j] == 1)
{$i = ($i == "") ? (a[1] ":" length(b) - j) : ($i FS a[1] ":" length(b) - j)}}};
print $0}' file