使用sed删除每一行的字符串

时间:2015-12-21 13:56:04

标签: sed

我的文件包含x行数,我想删除每行开头和结尾的引用字符串之前和之后的字符串。 要删除的引用字符串和字符串由空格分隔。

该文件包含:

test.user.passs
test.user.location
global.user
test.user.tel
global.pass
test.user.email string_err
@ttt...> test.user.car ->  
test.user.address
è_ 788 test.user.housse
test.user.child
{kl78>&é} global.email
global.foo
test.user.foo

如何删除包含“test”字符串的每行开头的字符串,以及用sed空格或制表符分隔的每行结尾?

期望的结果是:

test.user.passs
test.user.location
global.user
test.user.tel
global.pass
test.user.email
test.user.car 
test.user.address
test.user.housse
test.user.child
{kl78>&é} global.email
global.foo
test.user.foo

3 个答案:

答案 0 :(得分:2)

我将您的问题解释为:找到第一个单词“单词字符和至少一个点”

的Tcl:

echo '
set fh [open [lindex $argv 1] r]
while {[gets $fh line] != -1} {puts [regexp -inline {\w+(?:\.\w+)+} $line]}
' | tclsh - file

SED

sed -r 's/.*\<([[:alpha:]]+(\.[[:alpha:]]+)).*/\1/' file

perl的

perl -nE '/(\w+(\.\w+)+)/ and say $1' file

答案 1 :(得分:1)

使用sed喜欢

sed -r 's/^[^ ]+[ ]+([^ ]+)[ ]+[^ ]*/\1/' file

答案 2 :(得分:1)

这可能适合你(GNU sed):

sed -r 's/.*(test\S+).*/\1/' file