删除字母后的所有句点
Removing all periods after a letter
如果我有这样的文件:
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
sed -n '/^[[:blank:]]*[[:alpha:]]/ {/\.[[:digit:]]\+$/! p}' file
对于以字母开头的行,如果该行不以点和数字结尾,则打印该行。
在评论中找到更新的要求:
awk ' !~ /[[:alpha:]]\.[[:digit:]]+$/' file
啊,那会省略像 "notseen.1" 这样的东西,即使它不是重复的:
awk '
{root = ; sub(/\.[[:digit:]]+$/, "", root)}
~ /[[:alpha:]]\.[[:digit:]]+$/ && seen[root] {next}
{print; seen[root] = 1}
' file
如果我有这样的文件:
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
sed -n '/^[[:blank:]]*[[:alpha:]]/ {/\.[[:digit:]]\+$/! p}' file
对于以字母开头的行,如果该行不以点和数字结尾,则打印该行。
在评论中找到更新的要求:
awk ' !~ /[[:alpha:]]\.[[:digit:]]+$/' file
啊,那会省略像 "notseen.1" 这样的东西,即使它不是重复的:
awk '
{root = ; sub(/\.[[:digit:]]+$/, "", root)}
~ /[[:alpha:]]\.[[:digit:]]+$/ && seen[root] {next}
{print; seen[root] = 1}
' file