我想编写一个unix脚本来执行以下操作以获得ff结果:
textfile1包含以下文本:
keyval1,1
keyval1,2
keyval1,3
keyval1,4
keyval2,1
keyval2,2
keyval3,1
keyval4,1
keyval4,3
keyval4,4
预期结果:
keyval1 (1,2,3,4)
keyval2 (1,2)
keyval2 (1)
keyval4 (1,3,4)
谢谢。
我是unix的新手,这是我到目前为止所做的。但它还没有工作:(
#!/bin/ksh
f1 = 'cut -d "," -f 1 keyval.txt'
f2 = 'cut -d "," -f 2 keyval.txt'
while f1 <> f2
do
echo f1 "("f2")"
done > output.txt
答案 0 :(得分:3)
派对有点晚了,但我差点就这样做了几乎:
#!/usr/bin/perl
while (<>)
{
/(.+),(.?+)\s*/;
push @{$h{$1}}, $2;
}
print map {"$_ (" . join(',', @{$h{$_}}) . ")\n"} sort keys %h;
不是特别漂亮,但它完成了工作。
答案 1 :(得分:2)
您可以使用AWK轻松完成此操作:
#!/usr/bin/awk -f
BEGIN {
FS = ","
closeBracket = ""
}
{
if (key != $1)
{
key = $1
printf "%s%s (%s", closeBracket, key, $2
}
else
{
printf ",%s", $2
}
closeBracket = ")\n"
}
END {
printf "%s", closeBracket
}