如果我有这样的文件:
stuff
stuff.1
stuff.2
stuff.3
12.5
45.2
stugg
stugg.1
stugg.2
5.2
8
amber
amber.1
amber.2
amber.3
amber.4
7
21.2
amst
amst.1
5
我希望删除stuff
&的重复项stugg
& amber
& amst
以.number
结尾的所有内容都算作重复,我如何使用awk执行此操作?还是sed?
输出应为
stuff
12.5
45.2
stugg
5.2
8
amber
7
21.2
amst
5
答案 0 :(得分:3)
<击> 撞击>
<击>sed -n '/^[[:blank:]]*[[:alpha:]]/ {/\.[[:digit:]]\+$/! p}' file
对于以字母开头的行,如果该行不以点和数字结尾,则打印该行。
击>
在评论中找到更新的要求:
awk '$1 !~ /[[:alpha:]]\.[[:digit:]]+$/' file
啊,这会省略类似“notseen.1”的内容,即使它不是重复内容:
awk '
{root = $1; sub(/\.[[:digit:]]+$/, "", root)}
$1 ~ /[[:alpha:]]\.[[:digit:]]+$/ && seen[root] {next}
{print; seen[root] = 1}
' file