用sed提取索引

时间:2014-01-10 17:47:04

标签: linux bash shell 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)来完成它?

我可以使用2个命令grepcut

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

使用,您可以搜索以any2结尾的任何行,并使用两个替换命令,第一个删除所有字符,直到第一个.,第二个删除下一个.直到结束:

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

它产生:

tata1
tata2
tata5