Regex ip后删除Sed

Regex ip后删除Sed,regex,sed,Regex,Sed,我有一个简单的问题 我有这样的数据: boo:moo:127.0.0.1--¹óÖÝÊ¡µçÐÅ foo:joo:127.0.0.1 ÁÉÄþÊ¡ÉòÑôÊвʺçÍø°É boo:moo:127.0.0.1 foo:joo:127.0.0.1 我该怎么做呢 boo:moo:127.0.0.1--¹óÖÝÊ¡µçÐÅ foo:joo:127.0.0.1 ÁÉÄþÊ¡ÉòÑôÊвʺçÍø°É boo:moo:127.0.0.1 foo:joo:127.0.0.1 我的sed代码 se

我有一个简单的问题

我有这样的数据:

boo:moo:127.0.0.1--¹óÖÝÊ¡µçÐÅ
foo:joo:127.0.0.1 ÁÉÄþÊ¡ÉòÑôÊвʺçÍø°É
boo:moo:127.0.0.1
foo:joo:127.0.0.1
我该怎么做呢

boo:moo:127.0.0.1--¹óÖÝÊ¡µçÐÅ
foo:joo:127.0.0.1 ÁÉÄþÊ¡ÉòÑôÊвʺçÍø°É
boo:moo:127.0.0.1
foo:joo:127.0.0.1
我的sed代码

sed -e 's/\.[^\.]*$//' test.txt

谢谢

您可能会找到一个类似IP的子字符串,然后将其全部删除:

sed -E 's/([0-9]{1,3}(\.[0-9]{1,3}){3}).*/\1/' # POSIX ERE version
sed 's/\([0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}\).*/\1/'  # BRE POSIX version
[0-9]{1,3}\.[0-9]{1,3}{3}模式是一种简化的IP地址正则表达式模式,它匹配并捕获1到3个数字,然后捕获3个点的出现,再次捕获1到3个数字,然后.*匹配并消耗行的其余部分。替换模式中的\1占位符将捕获的值插入到结果中

请注意,在BRE POSIX模式中,必须转义并使其成为捕获组构造,并且需要转义{…}使其成为范围/间隔/限制量词。在正则表达式文献中,它有很多名称


请参阅。

对于给定的示例,您可以捕获从行首到行尾的所有内容

$ sed 's/\(.*[0-9]\).*/\1/' ip.txt
boo:moo:127.0.0.1
foo:joo:127.0.0.1

$ grep -o '.*[0-9]' ip.txt
boo:moo:127.0.0.1
foo:joo:127.0.0.1
或者,您可以删除行尾的所有非数字字符

$ sed 's/[^0-9]*$//' ip.txt
boo:moo:127.0.0.1
foo:joo:127.0.0.1

很高兴它对你有用。也请考虑它是否对你有帮助。