如何“挤压 - 重复”的话?

时间:2013-10-01 14:00:23

标签: linux bash tr

如何“挤压 - 重复”的话? 类似于使用tr -s ''

“挤压重复的字符”

我想改变例如:

hello.hello.hello.hello

hello

1 个答案:

答案 0 :(得分:1)

这可以是一种方式:

$ cat a
hello hello bye but bye yeah
hello yeah
$ awk 'BEGIN{OFS=FS=" "} 
  {  for (i=1; i<=NF; i++) {
       if (!($i in a)) {printf "%s%s",$i,OFS; a[$i]=$i}
     }; 
    delete a;
    print ""
  }' a
hello bye but yeah 
hello yeah 

您可以更改字段分隔符:

$ cat a
hello|hello|bye|but|bye|yeah
hello|yeah
$ awk 'BEGIN{OFS=FS="|"} {for (i=1; i<=NF; i++) {if (!($i in a)) {printf "%s%s",$i,OFS; a[$i]=$i}}; delete a; print ""}' a
hello|bye|but|yeah|
hello|yeah|