셸 문자열 작업 설명

2660 단어 shell문자열 조작
1.셸 변수 성명 의 판단
표현 식
속뜻
${var}
변수 var 의 값 은$var 와 같 습 니 다.
${var-DEFAULT}
var 가 설명 되 지 않 았 다 면$DEFAULT 를 값 으로 합 니 다*
${var:-DEFAULT}
var 가 설명 되 지 않 았 거나 값 이 비어 있 으 면$DEFAULT 를 값 으로 합 니 다*
${var=DEFAULT}
var 가 설명 되 지 않 았 다 면$DEFAULT 를 값 으로 합 니 다*
${var:=DEFAULT}
var 가 설명 되 지 않 았 거나 값 이 비어 있 으 면$DEFAULT 를 값 으로 합 니 다*
${var+OTHER}
var 가 설명 하면 값 은$OTHER 입 니 다.그렇지 않 으 면 null 문자열 입 니 다.
${var:+OTHER}
var 가 설정 되 어 있 으 면 값 은$OTHER 입 니 다.그렇지 않 으 면 null 문자열 입 니 다.
${var?ERR_MSG}
var 가 설명 되 지 않 았 다 면$ERR 인쇄 하 십시오.MSG *
${var:?ERR_MSG}
var 가 설정 되 지 않 았 다 면$ERR 인쇄MSG *
${!varprefix*}
이전 varprefix 로 시작 하 는 모든 변 수 를 일치 시 킵 니 다.
${!varprefix@}
이전 varprefix 로 시작 하 는 모든 변 수 를 일치 시 킵 니 다.
*아주 간단 합 니 다.여러분 이 한번 해 보시 면 알 수 있 습 니 다.더 이상 말 하지 않 겠 습 니 다.달러 기호 와 왼쪽 괄호 사이 에 빈 칸 이 존재 하지 않도록 주의 하 세 요.왼쪽 괄호 는 변수 이름과 빈 칸 이 존재 하지 않 고 변수 이름 은 판단 과 일치 하지 않 습 니 다.
2.문자열 작업(길이 가 져 오기,읽 기,일치 삭제,교체)
표현 식
속뜻
${#string}
$string 길이
${string:position}
$string 에서 위치$position 에서 하위 문자열 을 추출 합 니 다.
${string:position:length}
$string 에서 위치$position 에서$length 길이 의 하위 문자열 을 추출 합 니 다.
${string#substring}
변수$string 의 시작 부분 에서$substring 과 가장 짧 은 하위 문자열 을 삭제 합 니 다.
${string##substring}
변수$string 의 시작 부분 에서$substring 과 가장 긴 하위 문자열 을 삭제 합 니 다.
${string%substring}
변수$string 의 끝 에서$substring 과 가장 짧 은 하위 문자열 을 삭제 합 니 다.
${string%%substring}
변수$string 의 끝 에서$substring 과 가장 긴 하위 문자열 을 삭제 합 니 다.
${string/substring/replacement}
$replacement 을 사용 하여 첫 번 째 일치 하 는$substring 을 대체 합 니 다.
${string//substring/replacement}
$replacement 을 사용 하여 일치 하 는$substring 을 대체 합 니 다.
${string/#substring/replacement}
$string 접두사 가$substring 과 일치 하면$replacement 으로 일치 하 는$substring 을 대체 합 니 다.
${string/%substring/replacement}
$string 의 접미사 가$substring 과 일치 하면$replacement 으로 일치 하 는$substring 을 대체 합 니 다.
*설명 할 것 은 substring 이 정규 표현 식 일 수 있다 는 것 입 니 다.
대체 명령:cutsed awk,이 세 가 지 는 더 강력 한 문자열 처리 명령 으로 문자열 에 관 한 많은 일 을 할 수 있 습 니 다.여기 에는 많은 사례 가 소개 되 어 있다.
3、성능 비교 time for i in$(seq 10000);do a=${#test};done;time for i in $(seq 10000);do a=$(expr length $test);done;
 
real 0m0.181s
user 0m0.170s
sys 0m0.000s

real 0m8.580s
user 0m2.497s
sys 0m6.075s
awk,sed,cut,length 등 외부 명령 처리 문자열 을 순환 적 으로 호출 하 는 것 과 같 습 니 다.시간 이 걸 리 는 것 은 당연 합 니 다.전에 셸 최적화 문 제 를 말 한 적 이 있 는데 여 기 는 더 이상 군말 하지 않 습 니 다.셸 순환 은 awk 보다 매우 느 립 니 다.이곳 의 성능 테스트 는 실제 적 인 의미 가 없고 구체 적 인 원인 은 셸 과 결합 하여 그 편 을 최적화 시 킵 니 다.4.문자열 정규 판단 은 다음 명령 과 유사 하 게 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기