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-4
or 。-f3,4
答案3
我们根据字段是否大于 3 来动态设置 OFS 的值。
$ awk '
BEGIN { a[1] = FS = "/" }
{
OFS = a[(NF>3)]
print $3, $4
}
' file