다음 코드가 있습니다.
testval="aaa_bbb_ccc,"
testval+="_ddd"
echo ${testval}
하지만 "뒤에 쉼표"를 제거해야 합니다.ccc${testval}
". 추가하기 전에는 항상 마지막 문자였습니다._ddd". 문자열에 추가 쉼표를 유지해야 할 수도 있습니다.
그러나 지금까지 나는 작동하는 것을 찾을 수 없습니다.
예를 들어
testval="aaa_bbb_ccc," ;
testval=${testval} | rev | cut -c 2- | rev ; testval+="_ddd" ;
echo ${testval}
또는
testval="aaa_bbb_ccc," ;
testval=${testval} | sed 's/.$//' ; testval+="_ddd" ;
echo ${testval}
둘 다 다음으로 이어질 수 있습니다.
aaa_bbb_ccc,_ddd
나는 또한 다음을 시도했습니다.
testval="aaa_bbb_ccc," ;
testval=$(${testval} | rev | cut -c 2- | rev) ;
testval+="_ddd" ;
echo ${testval}`
그리고
testval="aaa_bbb_ccc," ;
testval=$(${testval} | sed 's/.$//') ;
testval+="_ddd" ;
echo ${testval}
둘 다 다음으로 이어질 수 있습니다.
-su: {testval}: command not found**
rtrim
동등하거나 유사한 기능 은 없나요 ? 이것은 마지막 것을 다듬습니다.N문자열/변수의 문자
답변1
비슷한 기능에 상응하는 기능이나 rtrim이 없나요? 문자열/변수에서 마지막 n 문자를 제거하십시오.
바로 여기에:
${parameter%word}
${parameter%%word}
Remove matching suffix pattern.
이 %
양식은 가장 짧은 일치 항목을 제거하고 %%
가장 긴 일치 항목을 제거합니다. 해당 "ltrim"은 ${parameter#word}
및 입니다 ${parameter##word}
.
예를 들어
$ testval="aaa_bbb_ccc,"
$ testval=${testval%,}
$ echo ${testval}
aaa_bbb_ccc
귀하의 경우
$ testval="aaa_bbb_ccc,"
$ testval=${testval%,}
$ testval+="_ddd"
$ echo ${testval}
aaa_bbb_ccc_ddd
,
이를 변경 하여 ?
단일 문자를 제거하거나 ???
n=3개의 후행 문자 등을 바꿀 수 있습니다 . Bash에서 쉘 옵션이 설정된 경우 word
KSH 스타일 확장 글로벌 모드가 될 수 있습니다.extglob
답변2
초기 문자열에는 쉼표가 하나만 있으므로 마지막 문자를 제거한 다음 _ddd
.
$ testval="aaa_bbb_ccc,"
$ testval="${testval/%,/_ddd}"
$ echo $testval
aaa_bbb_ccc_ddd
패턴이 %
bash로 시작하기 때문에 쉼표를 일치시키려고 하지만,오직위치해 있다면끝끈. 둘 사이의 차이점을 비교합니다(그리고 ,
원래 문자열에서 후자를 대체하는 데 사용한 내용을 기록해 둡니다 _
).aaa
$ testval="aaa,bbb_ccc,"
$ testval="${testval/%,/_ddd}"
$ echo $testval
aaa,bbb_ccc_ddd
그리고 이것은 아닙니다 %
.
$ testval="aaa_,bbb_ccc,"
$ testval="${testval/,/_ddd}"
$ echo $testval
aaa__dddbbb_ccc,
답변3
답변은 이미 귀하의 질문에 있습니다. echo
${testval}` 앞에 추가하기 만 하면 됩니다.
testval="aaa_bbb_ccc," ; testval=$(echo ${testval} | sed 's/.$//') ; testval+="_ddd" ; echo ${testval}
aaa_bbb_ccc_ddd
답변4
당신은 그것을 사용할 수 있습니다 awk
:
testval="aaa_bbb_ccc,"
testval=$(echo $testval| awk '{sub(/.$/,"",$0);print $0"_ddd"}')
결과 출력:
aaa_bbb_ccc_ddd