하위 문자열을 구분 기호로 사용하여 문자열을 분할하고 다음 부분을 가져옵니다.

하위 문자열을 구분 기호로 사용하여 문자열을 분할하고 다음 부분을 가져옵니다.

이건 내 문자열이야LIBRARY_TRGT_CANV,CANV_MATCH<anything>

마지막 구분 기호 이후의 모든 텍스트를 가져오고 싶습니다. 즉 , 다음과 같습니다 _TRGT_.

원하는 출력:

CANV,CANV_MATCH<anything>

- - - 또는- - -

두 번째 밑줄 뒤의 모든 텍스트를 가져옵니다. 즉,CANVL,CANVL_BATCH<anything>

답변1

사용할 수 없거나 sed필요 하지 않습니다 awk. 순수 POSIX 셸에서 이 작업을 수행할 수 있습니다.

문자열을 변수로 가정하면 $string다음을 사용하여 마지막 문자열 이후의 모든 것을 가져올 수 있습니다 _TRGT_.

cutstring="${string##*_TRGET_}"

( ##문자열 시작 부분에서 가능한 가장 긴 일치 항목을 제거합니다)

두 번째 밑줄 이후의 모든 내용을 얻으려면 다음을 수행하십시오.

cutstring="${string#*_*_}"

( #문자열 시작 부분에서 가능한 가장 짧은 일치 항목을 제거합니다)

sed물론, 종료 후에 콘텐츠를 얻을 수도 있습니다 _TRGT_.

sed 's/.*_TRGT_//' <<< "$string"

또는 두 번째 밑줄 이후의 내용을 가져옵니다.

sed 's/^[^_]*_[^_]*_//' <<< "$string"

답변2

echo "LIBRARY_TRGT_CANV,CANV_MATCH<anything>"|awk -F "_TRGT_" '{print $NF}'

산출

CANV,CANV_MATCH<anything>

관련 정보