Shell 如何将公共前缀重写为标头?
假设您有一个更改注释列表,如下所示:Shell 如何将公共前缀重写为标头?,shell,Shell,假设您有一个更改注释列表,如下所示: 2011-02-21: Removed first feature to get rid of previous customer 2011-02-21: Added second feature to open up new markets 2011-02-09: Implemented hot fix to calm down angry customer 2011-02-08: Developed project into a minimal viab
2011-02-21: Removed first feature to get rid of previous customer
2011-02-21: Added second feature to open up new markets
2011-02-09: Implemented hot fix to calm down angry customer
2011-02-08: Developed project into a minimal viable product
2011-02-08: Started project
是否可以使用标准shell工具将其改写为以下格式
2011-02-21
* Removed first feature to get rid of previous customer
* Added second feature to open up new markets
2011-02-09
* Implemented hot fix to calm down angry customer
2011-02-08
* Developed project into a minimal viable product
* Started project
如果是这样的话,如何通过管道
#!/bin/bash
lastprefix=""
while read prefix line
do
if [ "$prefix" != "$lastprefix" ]
then
lastprefix="$prefix";
echo ""
echo "$prefix"
fi
echo " * $line"
done
通过这个管道
#!/bin/bash
lastprefix=""
while read prefix line
do
if [ "$prefix" != "$lastprefix" ]
then
lastprefix="$prefix";
echo ""
echo "$prefix"
fi
echo " * $line"
done
这应该做到:
awk -F: '$1 != prev {print $1; prev = $1} {$1 = ""; print " *" $0}' inputfile
这应该做到:
awk -F: '$1 != prev {print $1; prev = $1} {$1 = ""; print " *" $0}' inputfile
如果是作业,请贴上标签。没有作业,真正的工作。。。但是在用Ruby写东西之前,我想知道是否有一个简单的shell解决方案。如果是家庭作业,请将其标记为这样。没有家庭作业,真正的工作。。。但是在用Ruby写东西之前,我想知道是否有一个简单的shell解决方案,或者甚至是{$1=*;print}或者甚至是{$1=*;print}这是一个很好的解决方案。我更喜欢它,因为它很容易理解和修改。这是一个很好的解决方案。我更喜欢它,因为它很容易理解和修改。