我有一个文件,其中包含mysql表的名称及其列名。我想转换成以下格式
file:example.txt
Table Name | Column Name
ABC | 123
ABC | 345
XYZ | 111
FFF | 222
FFF | 333
FFF | 4444
输出应为
ABC(123,345)
XYZ(111)
FFF(222,333,4444)
请给我一些例子。
答案 0 :(得分:3)
$ cat t.awk
#!/usr/bin/awk -f
BEGIN { FS="[ \t|]+" }
NR>1 { a[$1]=a[$1]$2"," }
END {
for (i in a)
printf "%s(%s)\n", i, substr(a[i], 0, length(a[i])-1)
}
$ ./t.awk example.txt
ABC(123,345)
XYZ(111)
FFF(222,333,4444)
答案 1 :(得分:2)
有些人喜欢这样:
awk -F"[ \t|]+" 'NR>2 {printf f==$1?"":")\n"} NR>1{printf (f==$1?","$2:$1"("$2)} {f=$1} END {print ")"}' file
ABC(123,345)
XYZ(111)
FFF(222,333,4444)
答案 2 :(得分:0)
Pure bash(4.0 +):
declare -A name # associative array
while read a b c; do
name[$a]="${name[$a]},$c"
done < <( tail -n+2 "$infile" ) # skip first line
for nm in ${!name[@]}; do
echo "$nm(${name[$nm]#,})" # remove leading comma
done
参数替换会删除前导逗号