我有一个类似的文件:
foobar Me
baz I
baz love
foobar too.
baz you.
我想使用第一列作为键来折叠它,第二列作为累积信息。在前面的示例中,输出将是:
baz I love you.
foobar Me too.
(第二列将用空格或制表符连接)
我知道我可以用AWK,Python,Perl等来做,但我想用普通的Bash命令来做。
答案 0 :(得分:1)
如果你只想要bash,请在while
循环中读取文件,并在关联数组中累积值。
$ declare -A values
$ while read -r key val; do values["$key"]+="$val "; done < file
$ for key in "${!values[@]}"; do printf "%s\t%s\n" "$key" "${values[$key]}"; done
baz I love you.
foobar Me too.
请注意,数组键的顺序为 indeterminate 。只是偶然的输出是baz然后foobar。如果您需要输出具有特定顺序,则需要更多代码。