たとえば、inはa:bc:d:a:hi:p:a
重複エントリを削除しa
、in apple:orange:apple:.:pear:mango:.:apple
-は重複エントリを削除します。apple
ベストアンサー1
牛に似た一種の栄養アッ回避策(すべての区切り文字が保持されている):
s="apple:orange:apple:.:pear:mango:.:apple"
awk '{ len=split($0,a,/:|:\.:/,seps);
for(i=1;i<=len;i++) printf "%s%s",(!w[a[i]]++? a[i]:""),(i==len? "":seps[i]);
print "" }' <<<"$s"
len=split($0,a,/:|:\.:/,seps)
- 文字列を正規表現パターンで区切られたフラグメントに分割し、フラグメントを配列/:|:\.:/
に保存し、a
区切り文字列をseps
配列に保存します。len
- 分割によって生成された要素/ブロックの数を含みます。
出力:
apple:orange::.:pear:mango:.: