如何在 awk 中“加入”,或以其他方式修剪尾随 /?

如何在 awk 中“加入”,或以其他方式修剪尾随 /?
 echo -n "refs/heads/feature" | awk -F '/' -v OFS='/' '{ print $3, $4 }' | sed 's/\/$/g'
sed: 1: "s/\/$/g": unterminated substitute in regular expression

如果我删除了 sed 这会打印feature/我只想feature但如果它是

echo -n "refs/heads/feature/foo" | awk -F '/' -v OFS='/' '{ print $3, $4 }'

我想要feature/foo

git这是一个 github actions 工作流程,我从env var获取引用GITHUB_REF,并打算将其分配给另一个工作流程。

答案1

$ echo -n "refs/heads/feature" | awk -F '/' '{ print $3 (NF>3 ? FS $4 : "")}'
feature

$ echo -n "refs/heads/feature/foo" | awk -F '/' '{ print $3 (NF>3 ? FS $4 : "")}'
feature/foo

答案2

您可以使用cut以下方法:使用斜杠作为分隔符,从第三个字段打印到最后一个字段:

while read branch; do
    echo "$branch" | cut -d/ -f3-
done <<END
refs/heads/feature
refs/heads/feature/foo
END

输出

feature
feature/foo

如果您只需要第三个和第四个字段,您也可以使用-f3-4or 。-f3,4

答案3

我们根据字段是否大于 3 来动态设置 OFS 的值。

$ awk '
  BEGIN { a[1] = FS = "/" }
  {
    OFS = a[(NF>3)]
    print $3, $4
  }
' file

相关内容