我想在排除@ string之后剪切并在行尾添加/斜杠而不触及行不包含@符号。
在文件中搜索并查找;
path = /aaa/bbb/ccc.com/user/dddd/user@yahoo.com/
path = /aaa/bbb/ccc.com/user/dddd/user@yahoo.co.uk/
path = /aaa/bbb/ccc.com/user/dddd/user2@yahoo.com/
path = /aaa/bbb/ccc.com/user/dddd/user@hotmail.co.uk/
path = /aaa/bbb/ccc.com/user/dddd/user@abc.xxx.co.uk/
path = /aaa/bbb/ccc.com/user/dddd/user5/
我想转换的内容;
path = /aaa/bbb/ccc.com/user/dddd/user@yahoo/
path = /aaa/bbb/ccc.com/user/dddd/user@yahoo2/
path = /aaa/bbb/ccc.com/user/dddd/user2@yahoo/
path = /aaa/bbb/ccc.com/user/dddd/user@hotmail/
path = /aaa/bbb/ccc.com/user/dddd/user@abc/
path = /aaa/bbb/ccc.com/user/dddd/user5/
答案 0 :(得分:1)
sed -r 's/@([^\.\/]+)(.*)/@\1\//' < file
path = /aaa/bbb/ccc.com/user/dddd/user@yahoo/
path = /aaa/bbb/ccc.com/user/dddd/user@yahoo/
path = /aaa/bbb/ccc.com/user/dddd/user2@yahoo/
path = /aaa/bbb/ccc.com/user/dddd/user@hotmail/
path = /aaa/bbb/ccc.com/user/dddd/user@abc/
path = /aaa/bbb/ccc.com/user/dddd/user5/
如果你想更复杂的处理(雅虎与雅虎2),你将不得不使用一些编程语言,恕我直言
答案 1 :(得分:1)
sed '/@/ s|\(@[^.]*\).*$|\1/|' YourFile
从结尾开始而不是@
(posix版本)
/@/
仅处理内有@
的行(其他行保持原样)。s
动作。由于模式中的char /
,我在这里使用了另一个分隔符|
。\(@[^.]*\)
表示从@
开始的第一组char,直到第一个点(实际上所有后续附加的char我都可以,但不是一个点)。如果没有点,则会占用该行的以下所有内容。.*$
表示先例模式(我们的组)之后的任何字符,直到结束$
。1
的内容所取代(此处只有一个群组)\1
后跟/
。