![删除除以字符串“.com”结尾的所有行之外的所有内容](https://linux22.com/image/187330/%E5%88%A0%E9%99%A4%E9%99%A4%E4%BB%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E2%80%9C.com%E2%80%9D%E7%BB%93%E5%B0%BE%E7%9A%84%E6%89%80%E6%9C%89%E8%A1%8C%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
我正在编写一个脚本,当前输入为:
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]+)?$'
如果0
in0.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
。