이미 공백으로 구분된 문자열을 자르는 방법은 무엇입니까?

이미 공백으로 구분된 문자열을 자르는 방법은 무엇입니까?

이런 문자열이 있다고 가정하자

test="1/2/3 4/5/6 7/8/9/0"

공백과 "/"로 구분됩니다. 각 문자열 세그먼트의 두 번째 필드를 가져와서 이와 같은 결과를 반환하고 싶습니다.

2 5 8

컷을 사용하여 이 작업을 수행할 수 있습니까? 아니면 다른 것이 필요한가요?

newstring=$(echo $test | cut -d "/" -f2)

반품만 가능

2

나는 무엇을 해야할지 모르겠습니다.

답변1

그리고 zsh:

$ echo ${${${=test}#*/}%%/*}
2 5 8

그렇지 않으면 다음과 같이 할 수 있습니다.

$ printf '%s\n' "$test" | sed 's|[^ /]*/\([^/]*\)[^ ]*|\1|g'
2 5 8

답변2

당신이 할 수 있는 한 가지는 공백을 개행 문자로 바꾼 다음 awk또는 를 사용하는 것입니다 cut. 그런 다음 줄 바꿈을 공백으로 바꿉니다. echo최종 줄 바꿈을 얻으려면 모든 것을 다시 원할 것입니다 .

$ echo $(echo "$test" | tr ' ' '\n' | awk -F'/' '{print $2}' | tr '\n' ' ')
2 5 8

또는

$ echo $(echo "$test" | tr ' ' '\n' | cut -d/ -f 2 | tr '\n' ' ')
2 5 8

다음을 사용할 수도 있습니다 perl.

$ echo "$test" | perl -lane 's#.*?/(.+?)/.*#$1# for @F; print "@F"' 
2 5 8

답변3

당신이 묻는다면cut

cut -d/ -f2,4,6 --output-delimiter=' ' <<<"$test"

관련 정보