이건 내 문자열이야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>