【发布时间】:2014-01-03 09:35:19
【问题描述】:
我有一个文本文件,其中包含:
toto.titi.any=val1
toto.tata.any=val2
toto.tete.any=val2
如何从这个文件中提取titi、tata和tete。
应该是这样的
$ cat myfile.txt | sed '......'
输出应该是
titi
tata
tete
【问题讨论】:
我有一个文本文件,其中包含:
toto.titi.any=val1
toto.tata.any=val2
toto.tete.any=val2
如何从这个文件中提取titi、tata和tete。
应该是这样的
$ cat myfile.txt | sed '......'
输出应该是
titi
tata
tete
【问题讨论】:
你真的需要sed吗?你可以使用cut:
cut -d. -f2 filename
【讨论】:
使用 awk 你可以做到:
awk -F. '{print $2}' file
【讨论】:
awk/cut 是解决这个问题的更好选择。
这里是 sed 行和 grep 选项:
sed -r 's/.*\.([^.]*)\..*/\1/'
grep -Po '\.\K[^.]*(?=\.)'
【讨论】:
awk 和 cut 最适合这个
您也可以逐行读取文件,并打印出需要的部分。
$ IFS=.
$ while read first interested others ; do echo $interested; done < file
titi
tata
tete
【讨论】:
sed -n 's/^[^.]*.\([^.]*\)..*/\1/p' myfile.txt
显示行内至少有 2 个点的点之间的第二个值
【讨论】: