我有一个简单的问题。
我有这样的数据:
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
谢谢!
答案 0 :(得分:1)
对于给定的示例,您可以捕获从行首到行中最后一位的所有内容
<div>
<p id='x'></p>
<p id='y'></p>
<p id='x2'></p>
<p id='y2'></p>
<p id='w'></p>
<p id='h'></p>
<br/>
<button id='fix_label' onclick="fixLabel()">Fix Label Here</button>
</div>
<form action="" method="POST" id="canvas">
<div id='img_area'>
<img src="someImageFile.jpg" id="imageId" width="350" height="350" />
</div>
<div id='label_area'>
<input type="submit" name="submit" value="Label" id='input'>
</div>
<div id='fix_label_area'></div>
</form>
或者,您可以删除行末所有非数字字符
$ 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
答案 1 :(得分:0)
您可能会找到类似子字符串的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模式中,必须转义(
和)
使其成为捕获组构造,并且需要转义{...}
使其成为范围/间隔/ limiting量词(在正则表达式文献中有很多名称)。
查看online demo。