从输出命令中提取字符串

时间:2013-04-26 16:38:59

标签: linux shell sed awk

我的程序输出如下:

# myprogram list
val
val.dev
val.int
val.int.p1
val.int.p2
val.int.p3
val.int.p4
val.int.p5
val.dev.p6

我想从上面的输出中只提取val.int.下的字符串,所以我想在命令中添加一些内容以获得以下输出:

# myprogram list|<something options>
p1
p2
p3
p4
p5

是否可以在awk的一次调用中使用sed(或类似awk之类的内容)进行此操作?

4 个答案:

答案 0 :(得分:2)

awk 'NF>2 {print $3}' FS=.
  • 将字段分隔符更改为.
  • print field 3

答案 1 :(得分:2)

myCommand | sed -n 's/val\.int\.//p'

答案 2 :(得分:1)

试试这个:

awk -F'val.int.' '$0=$2' file

文件包含您的数据:

kent$ awk -F'val.int.' '$0=$2' file
p1
p2
p3
p4
p5

答案 3 :(得分:1)

又一个解决方案,这个涉及grep和Perl正则表达式:

$ myprogram list | grep -Po "(?<=val\.int\.).*"