Linux 从输出命令中提取字符串
我的程序输出如下:Linux 从输出命令中提取字符串,linux,shell,sed,awk,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 #我的程序列表| p1 p2 p3 p4 p5 是否可
# 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
#我的程序列表|
p1
p2
p3
p4
p5
是否可以在一次调用awk
(或类似的sed
)中使用awk
?awk'NF>2{print$3}'FS=。
- 将字段分隔符更改为
- 打印字段3
awk'NF>2{print$3}'FS=。
- 将字段分隔符更改为
- 打印字段3
awk -F'val.int.' '$0=$2' file
文件包含您的数据:
kent$ awk -F'val.int.' '$0=$2' file
p1
p2
p3
p4
p5
试试这个:
awk -F'val.int.' '$0=$2' file
文件包含您的数据:
kent$ awk -F'val.int.' '$0=$2' file
p1
p2
p3
p4
p5
还有另一种解决方案,它涉及
grep
和Perl正则表达式:
$ myprogram list | grep -Po "(?<=val\.int\.).*"
$myprogram list | grep-Po“(?另一种解决方案,它涉及grep
和Perl正则表达式:
$ myprogram list | grep -Po "(?<=val\.int\.).*"
$myprogram list | grep-Po”(?我应该通过文件吗?因为我尝试了myprogram list | awk-F'val.int.'$0=$2'
,但没有通过anything@AhmedZRIBI要么您键入了错误的内容,要么您忽略了告诉我们一些内容,因为这和tstone的答案都有效。您的命令在管道中是否执行了不同的操作?请尝试myprogram列出| cat
并查看它是否是相同的输出。我应该传递文件吗?因为我尝试了myprogram list | awk-F'val.int.'$0=$2'
,但没有得到anything@AhmedZRIBI要么你键入了错误的内容,要么你忽略了告诉我们一些内容,因为这和tstone的答案都起作用。你的命令有什么作用吗管道中的ng不同?请尝试myprogram list | cat
,看看是否是相同的输出。