與SED

2014-01-10 73 views
-1

提取物指標我有一個包含文件:與SED

toto.tata0.titi=any1 
toto.tata1.titi=any2 
toto.tata2.titi=any2 
toto.tata3.titi=any1 
toto.tata4.titi=any1 
toto.tata5.titi=any2 

我想提取所有tata引用這等於any2

我怎麼能只用一個命令(sed爲例)做?

我可以用兩個命令grepcut

$ cat file | grep "toto\.[^.]\+\.titi=any2" | cut -d. -f2 
tata1 
tata2 
tata5 
+0

請澄清。 ** = any2 **是否足夠匹配,還是您必須查看該行的其他部分?總是有一個** tata **術語,或者它可能會丟失?如果缺少,即使存在「any2」,也不匹配?你想要返回多少匹配的行? –

回答

2

隨着您可以搜索任何以結尾的行210和使用兩個替換的命令,第一個刪除所有字符,直到第一.,第二個下一個從到.刪除,直到結束:

sed -ne '/any2$/ { s/^[^.]*\.//; s/\..*$//; p }' infile 

它產生:

tata1 
tata2 
tata5 
3

您可以用awk:

awk -F'=' '$2=="any2"{print $1}' file 
toto.tata1.titi 
toto.tata2.titi 
toto.tata5.titi 

或者如果你只是想那麼中間部分:

awk -F'[.=]+' '$NF=="any2"{print $2}' fff 
tata1 
tata2 
tata5