我有一个包含以下几行的文件:
Name: Karl
Born: 2003-07-06 17:21:36.964
State: Germany
Hobby: Videogames
Name: Albert
Born: 2003-07-05 18:16:19.369
State: UK
Hobby: Soccer
Name: Mark
Born: 2003-06-15 16:58:21.201
State: Italy
Hobby: Jogging
我需要一个 shell 脚本,根据 Born 字段对空白行之间的行进行从旧到新的排序。根据给出的示例,正确的文件结果应该是:
Name: Mark
Born: 2003-06-15 16:58:21.201
State: Italy
Hobby: Jogging
Name: Albert
Born: 2003-07-05 18:16:19.369
State: UK
Hobby: Soccer
Name: Karl
Born: 2003-07-06 17:21:36.964
State: Germany
Hobby: Videogames
我无法做这样的事情,请不要使用 Perl 或 Python...我需要 bash。 提前寻求您的帮助。 问候, 戴夫
你试图完成免费编码,这违反了规则。而且 Unix shell 并不是特别擅长这种事情,如果有任何方法可以获取不同格式的数据,比如 json(有很好的工具可用),你应该这样做。但我会给你一个免费的建议,告诉你什么可能有效:
while read NAME
do
read BORN
read STATE
read HOBBY
read
echo "$NAME@$BORN@$STATE@$HOBBY"
done < mydata.txt | sort -t@ -k2,2 | (
IFS=@
while read NAME BORN STATE HOBBY
do
echo $NAME
echo $BORN
echo $STATE
echo $HOBBY
echo
done
)
我还没有测试过,但它给了你一个想法。