删除除以字符串“.com”结尾的所有行之外的所有内容

删除除以字符串“.com”结尾的所有行之外的所有内容

我正在编写一个脚本,当前输入为:

devdb.eu-central-1.rds.amazonaws.com
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com
2.5
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com

我怎样才能删除2.5?该数字可以是任何值,因为它是超时,开发人员可能会调整它。谢谢。

答案1

您可以使用 grep 删除不需要的行:

grep -v '^[0-9][0-9]*\(\.[0-9][0-9]*\)\?$'

使用扩展正则表达式的更短的等价形式:

grep -vE '^[0-9]+(\.[0-9]+)?$'

如果0in0.5是可选的,您可以使用例如

grep -vE '^([0-9]+(\.[0-9]+)?|^\.[0-9]+)$'

答案2

看了你的标题,“删除除以字符串结尾的所有行之外的所有内容.com“这是一个简单的使用grep

反转条件,得到“保留所有以字符串结尾的行.com

grep '\.com$' file

grep命令与正则表达式匹配,并且由于它.是 RE 的特殊字符(它匹配任何单个字符),因此您必须对其进行转义。该$符号绑定到行结束

答案3

您可以使用sed

$ sed '/^[0-9]*\.*[0-9]*$/d' file
devdb.eu-central-1.rds.amazonaws.com
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com
dev-redis.cnwoho.ng.0001.euc1.cache.amazonaws.com

答案4

另一种解决方案使用awk

awk '/\.com$/' file

这只会打印以 结尾的行.com

相关内容