Glu*_*ate 5 bash sed awk text-processing
概述
考虑一个散布着无序元素的有序列表,例如:
Alligator
Ant
Falcon <--
Baboon
Badger
Armadillo <--
Caiman
Cat
Run Code Online (Sandbox Code Playgroud)
如何处理此列表以删除所有无序元素?例如:
Alligator
Ant
Baboon
Badger
Caiman
Cat
Run Code Online (Sandbox Code Playgroud)
更多信息
无序元素总是单数,有序元素以至少 2 行为一组出现。一般模式是:
ordered
ordered
ordered
unordered <--
ordered
ordered
unordered <--
ordered
ordered
Run Code Online (Sandbox Code Playgroud)
无序元素可以更低......
A
B
F <---
D
E
Run Code Online (Sandbox Code Playgroud)
...并且高于以下有序元素:
A
C
B <---
D
E
Run Code Online (Sandbox Code Playgroud)
更困难的是:元素可以是大写和小写,并包含变音符号(例如:ä,ö,à)。
有没有办法用bash来完成这个?
如果最后一行没问题,这会起作用:
awk 'BEGIN {IGNORECASE=1}; NR==1 {lastline=$0; next;}; {if($0>lastline) {print lastline; '\
'lastline2=lastline; lastline=$0;} else if ($0>lastline2) lastline=$0; }; '\
'END {print lastline;}' file1.txt
Run Code Online (Sandbox Code Playgroud)
旧版本(有错误,用于比较)
awk 'BEGIN {IGNORECASE=1}; NR==1 {lastline=$0; next;}; '\
'{if($0>lastline) print lastline; lastline=$0;}; END {print lastline;}' file
Run Code Online (Sandbox Code Playgroud)