예 : qa_sharutils-2009-04-22-15-20-39
, 마지막 20 바이트를 잘라 내고 'qa_sharutils
'이 표시됩니다.bash string choping에서 문자열의 마지막 n 바이트를 잘라내는 방법은 무엇입니까?
나는 sed에서 그것을 수행하는 방법을 알고 있지만, 왜 $A=${A/.\{20\}$/}
이 작동하지 않습니까?
감사합니다. 당신의 문자열이 변수라는 $ str을에 저장되어있는 경우
예 : qa_sharutils-2009-04-22-15-20-39
, 마지막 20 바이트를 잘라 내고 'qa_sharutils
'이 표시됩니다.bash string choping에서 문자열의 마지막 n 바이트를 잘라내는 방법은 무엇입니까?
나는 sed에서 그것을 수행하는 방법을 알고 있지만, 왜 $A=${A/.\{20\}$/}
이 작동하지 않습니까?
감사합니다. 당신의 문자열이 변수라는 $ str을에 저장되어있는 경우
, 다음이 당신이
기본적으로${str:0:${#str} - 20}
, 문자열 슬라이스를 사용하여 수행 할 수 있습니다 bash는 지난 20 자리없이 당신에게 문자열을 제공 받게됩니다
${[variableName]:[startIndex]:[length]}
와 문자열의 길이는
${#[variableName]}
편집이다 :,솔루션은 파일에서 작동이 나오지 사용 : 떠들썩한 파티에서 ${parameter/pattern/string}
구문에서
sed 's/.\{20\}$//' < inputFile
, 패턴이 경로 와일드 카드 스타일의 패턴이 아닌 정규 표현식이다. 와일드 카드 구문에서 점 .
은 리터럴 점이며 중괄호는 선택 항목 (예 : 정규 표현식에서 파이프 |
)을 일치시키는 데 사용되므로 행에서 단순히 리터럴 문자열 ".20"
이 지워집니다.
설명 해 주셔서 감사합니다. 단 하나의 대답 만 허용됩니다. 죄송합니다. – jaimechen
기본 작업을 수행하는 데는 여러 가지 방법이 있습니다.
$ str="qa_sharutils-2009-04-22-15-20-39"
마지막 20자를 제거하려는 경우. 이 하위 문자열 선택은 0을 기준으로합니다.
$ echo ${str::${#str}-20}
qa_sharutils
"%"및 "%%"는 문자열의 오른쪽에서 제거합니다. 예를 들어, 기본 이름을 원하면 첫 번째 "-"다음에 나오는 문자를 빼십시오.
$ echo ${str%%-*}
qa_sharutils
'echo "$ {str :: - 20}"'충분합니다. –
마지막 20 바이트가 항상 날짜 인 경우에만.
$ str="qa_sharutils-2009-04-22-15-20-39"
$ IFS="-"
$ set -- $str
$ echo $1
qa_sharutils
$ unset IFS
첫 번째 대시 및 그 이후가 필요하지 않은 경우.
$ echo ${str%%-*}
qa_sharutils
사용 AWK :
echo $str | awk '{print substr($0,1,length($0)-20)}'
또는 문자열을 사용하여 조작 - $ 에코 {문자열 : 위치 : 길이} :
('ABCDEFG'SUBSTR 유사echo ${str:0:$((${#str}-20))}
'echo "$ {str :: - 20}"'충분합니다. –
, 2-1 , 3) in php :
echo 'abcdefg'|tail -c +2|head -c 3
'$ {str :: - 20}} '이면 충분합니다. –