[英]Using awk to get nth field from a particular line
我写了一个bash脚本,应该获取ghostscript的版本号。 代码如下:
local str=$(gs -v)
local gs_version=''
if [ -n "$str" ] ; then
gs_version=`awk -F'|' 'Ghostscript/ {version=$3; print version}' $str`
fi
echo " version: $gs_version"
gs -v的结果是:
GPL Ghostscript 8.70 (2009-07-31)
Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
该脚本正在寻找单词Ghostscript并试图提取第三个单词8.70。 那是我的目标。
我不是awk专家,但是运行此代码时出现以下错误:
awk: Ghostscript/ {version=$3; print version}
awk: ^ syntax error
我想我一定要瞎了,因为我看不出有什么问题。 我以为我可以在Ubuntu上工作,但是当我在CentOS 6上尝试时,这就是我得到的。
你可以说:
awk '/Ghostscript/{print $3}' inputfile
从包含Ghostscript的行中获取第三个字段。
当你说:
gs_version=`awk -F'|' 'Ghostscript/ {version=$3; print version}' $str`
有:
/
在Ghostscript之前 awk
从字符串读取,因此需要使用herestring。 |
) gs_version=$(awk '/Ghostscript/ {version=$3; print version}' <<< "$str")
尽管有更简单的方法来获取版本信息。
或者,您可以使用grep -P
来获取该版本字符串:
gs -v | grep -oP '(?<=Ghostscript )\S+'
8.70
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.