Linux 在每个节中按(DOW MON-DD-YY)日期对文件进行分段排序';s头
我有一个文件有重复的条目。条目以日期开始,两个条目之间有一个空行。如何使用sort命令或uniq-comand对日期进行排序:Linux 在每个节中按(DOW MON-DD-YY)日期对文件进行分段排序';s头,linux,sorting,uniq,Linux,Sorting,Uniq,我有一个文件有重复的条目。条目以日期开始,两个条目之间有一个空行。如何使用sort命令或uniq-comand对日期进行排序: * Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com> - Some fixes to init scripts * Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com> - Add missing man pages, fix u
* Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Some fixes to init scripts
* Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Add missing man pages, fix up init script (Bug #17676)
- Can be patched in for future release.
* Thu Feb 1 2001 Trond Eivind Glomsrød <teg@mail.com>
- Fix check for ipchains
但它不会捕获日期后的行,我需要对日期+内容进行排序。基于@jchevali的注释-只需要找到一个awk和tr都可以优雅处理的可打印字符,而该字符不在待处理的文本中:
awk '/^*/{printf "%s ^",$0} /^-/{printf "%s ^",$0} /^[ \t]*$/{printf "\n"}' paras | sort -n -t" " -k5 -k3M -k4 | tr '^' '\n'
* Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Add missing man pages, fix up init script (Bug #17676)
- Can be patched in for future release.
* Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Some fixes to init scripts
* Thu Feb 1 2001 Trond Eivind Glomsrød <teg@mail.com>
- Fix check for ipchains
awk'/^*/{printf”%s^“,$0}/^-/{printf”%s^“,$0}/^[\t]*$/{printf”\n}段| sort-n-t”“-k5-k3M-k4 | tr'^'\n
*2001年1月17日星期三Bernhard Rosenkraenzer
-添加缺少的手册页,修复初始化脚本(Bug#17676)
-可以在以后的版本中进行修补。
*2001年1月29日星期一Bernhard Rosenkraenzer
-对init脚本的一些修复
*2001年2月1日(星期四)
-修复ipchains的检查
使用Perl,您也可以这样做
> cat paras.txt
* Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Some fixes to init scripts
* Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Add missing man pages, fix up init script (Bug #17676)
- Can be patched in for future release.
* Thu Feb 1 2001 Trond Eivind Glomsrød <teg@mail.com>
- Fix check for ipchains
> perl -lne ' $_=/^\*/?$_:/^-/?"!$_":"\n"; printf("%s",$_);END{print} ' paras.txt | sort -n -t" " -k5 -k3M -k4 | tr '!' '\n' | sed 's/^\*/\n*/g'
* Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Add missing man pages, fix up init script (Bug #17676)
- Can be patched in for future release.
* Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Some fixes to init scripts
* Thu Feb 1 2001 Trond Eivind Glomsrød <teg@mail.com>
- Fix check for ipchains
>
>cat parats.txt
*2001年1月29日星期一Bernhard Rosenkraenzer
-对init脚本的一些修复
*2001年1月17日星期三Bernhard Rosenkraenzer
-添加缺少的手册页,修复初始化脚本(Bug#17676)
-可以在以后的版本中进行修补。
*2001年2月1日(星期四)
-修复ipchains的检查
>perl-lne'$\u=/^\*/?$\ u:/^-/?“!$”:“\ n”;printf(“%s”,美元);结束{print}'paras.txt | sort-n-t”“-k5-k3M-k4 | tr'!”\n'| sed's/^\*/\n*/g'
*2001年1月17日星期三Bernhard Rosenkraenzer
-添加缺少的手册页,修复初始化脚本(Bug#17676)
-可以在以后的版本中进行修补。
*2001年1月29日星期一Bernhard Rosenkraenzer
-对init脚本的一些修复
*2001年2月1日(星期四)
-修复ipchains的检查
>
输入(如问题中所述,有一些双空行):
输出:
cat -s input | awk '!/^$/{printf $0;next}{print}' | sort -n -t" " -k5 -k3M -k4 | sed 's/- /\n- /g;s/$/\n/'
cat -s input | awk '!/^$/{printf $0;next}{print}' | sort -n -t" " -k5 -k3M -k4 | sed 's/- /\n- /g;s/$/\n/'
* Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Add missing man pages, fix up init script (Bug #17676)
- Can be patched in for future release.
* Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Some fixes to init scripts
* Thu Feb 1 2001 Trond Eivind Glomsrød <teg@mail.com>
- Fix check for ipchains
cat-s输入| awk'/^$/{printf$0;next}{print}'sort-n-t'-k5-k3M-k4 | sed's/-/\n-/g;s/$/\n/'
*2001年1月17日星期三Bernhard Rosenkraenzer
-添加缺少的手册页,修复初始化脚本(Bug#17676)
-可以在以后的版本中进行修补。
*2001年1月29日星期一Bernhard Rosenkraenzer
-对init脚本的一些修复
*2001年2月1日(星期四)
-修复ipchains的检查
(请注意,已删除空的双线)
解释:
cat -s input | awk '!/^$/{printf $0;next}{print}' | sort -n -t" " -k5 -k3M -k4 | sed 's/- /\n- /g;s/$/\n/'
cat -s input | awk '!/^$/{printf $0;next}{print}' | sort -n -t" " -k5 -k3M -k4 | sed 's/- /\n- /g;s/$/\n/'
* Wed Jan 17 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Add missing man pages, fix up init script (Bug #17676)
- Can be patched in for future release.
* Mon Jan 29 2001 Bernhard Rosenkraenzer <bero@mail.com>
- Some fixes to init scripts
* Thu Feb 1 2001 Trond Eivind Glomsrød <teg@mail.com>
- Fix check for ipchains
将删除连续的空行(如果输入文件中没有空行,则可以删除命令的这一部分)cat-s input
将折叠行而不添加额外字符,只需在不打印awk'/^$/{printf$0;next}{print}'
的情况下打印行,当行不为空且为空时,仅添加\n
字符EOL
您的排序操作sort-n-t”“-k5-k3M-k4
通过在以sed的/-/\n-/g;s/$/\n/'
开头的模式之前添加-
,并在每行末尾添加\n
以重新创建空行,将行与\n
之前的行分开
.spec
文件中的更改日志条目进行排序?David…您是对的。当您显然真的愿意接受使用其他工具的答案时,为什么问题指定您需要使用排序
或uniq
的答案(perl、awk等)?如果你没有令人信服的限制理由,如果你不考虑它,你会得到范围更广的答案。很好的技巧。你做得比我自己好。不知道你可以使用sort来按月排序缩写(-M
).Neat.Thank Tink它可以工作。你能建议如果它是一种反向排序,如何实现它吗?遗憾的是,我在问题中没有提到。sort-r不起作用。只需将排序更改为如下sort-t”“-k5nr-k3Mr-k4nr
。@ParasPandey