awk新手在这里,想知道这是否可行。
我的档案:
CCDDBBAA
EFGHAC
KJLDFU
ABBAAC
期望的输出:
ABCD
ACEFGH
DFJKLU
ABC
我想按字母顺序对文件中的字符串进行排序,并删除字符串中的重复项。
谢谢!
答案 0 :(得分:1)
这可能适合你(GNU sed& sort):
sed 's/\s*/\n/g;s/.*/echo "&"|sort -u/e;s/\n//g' file
删除空格并用换行符分隔每个字符。对生成的行进行排序,删除重复项。删除引入的换行符。
答案 1 :(得分:1)
gawk:
awk -v FS="" '{
for(i=1;i<=NF;i++){
if ($i in a == 0){
a[$i]
}
};
d=asorti(a,b);
for(x=1;x<=d;x++){
printf "%s",b[x]
};
print "";
delete a;
delete b
}'
答案 2 :(得分:0)
perl的:
perl -pe '%x = map {$_=>1} split ""; $_ = join "", sort keys %x' file
或ruby:
ruby -pe '$_ = $_.chars.uniq.sort.join("")' file
答案 3 :(得分:0)
使用GNU awk 4. *表示sorted_in
并在FS为空时将记录拆分为字符:
$ cat tst.awk
BEGIN { FS=OFS=ORS=""; PROCINFO["sorted_in"]="@ind_str_asc" }
{
for (i=1;i<=NF;i++) a[$i]
for (i in a) print i
print RS
delete a
}
$ awk -f tst.awk file
ABCD
ACEFGH
DFJKLU
ABC