gpt4 book ai didi

bash - 使用 awk 从特定行获取第 n 个字段

转载 作者:行者123 更新时间:2023-12-04 19:33:05 33 4
gpt4 key购买 nike

我编写了一个 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")

    虽然有更简单的方法来获取版本信息。

    关于bash - 使用 awk 从特定行获取第 n 个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526575/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com