2016-07-06 80 views

回答

1
awk '/=/ {gsub(/^.*=/,""); print; next} !/=/ {print $3}' file 
variable 
2122 
till 
code 

解释:

awk ' 
/=/ {    # if equals sign in the record 
    gsub(/^.*=/,"") # remove everything from the beginning to the = 
    print   # print it 
    next} 
{print $3}  # print the third field 
' file 

通过@karakfa和@ John1024每建议编辑。

+0

您好詹姆斯, @ 伪名= hdiskpower8 逻辑装置ID = 2122 1 fscsi2 hdisk37 FA 10eB活性活着0 0 0为fscsi0 hdisk13 FA 7EB活性活着0 0 以上是我想用打印的输入数据awk ... 当我试图运行你的命令模式时,它显示错误(awk:致命:1作为gsub的参数数量是无效的) – user2243341

+1

'$ 0〜'暗示你可以删除它们并用'/ = /'和'!/ = /' – karakfa

+0

它为我工作非常感谢... – user2243341

1

如果目标是打印等号后会发生什么:

$ awk -F= '$2 {print $2}' file 
variable 
2122 

-F=告诉awk使用=作为字段分隔符。因此,在第一个=上线之前的是第一个字段$1

$2 {print $2告诉awk打印第二个字段,如果第二个字段不为空。

+0

嗨,约翰,谢谢......但在这里,我想打印下一行字段编号2(直到)和下一行(代码)以及。 – user2243341

+0

__till__和__code__看起来像是我的第三个领域。 –