Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从输出命令中提取字符串_Linux_Shell_Sed_Awk - Fatal编程技术网

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
      ,看看是否是相同的输出。