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 작업 워크플로입니다. 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
또는 를 사용할 수도 있습니다.-f3,4
답변3
필드가 3보다 큰지 여부에 따라 OFS 값을 동적으로 설정합니다.
$ awk '
BEGIN { a[1] = FS = "/" }
{
OFS = a[(NF>3)]
print $3, $4
}
' file