2014-09-04 4 views
1

tcsh에 대한 설명서를 읽었지만 필자의 경우 어떻게 작동하는지 또는 전혀 작동해야하는지 알 수 없습니다. 기본적으로 값이 6 자리 숫자 인 변수의 일부를 추출해야합니다. 그래서 처음 두 글자를 버리고 마지막 네 글자를 가져와야합니다.tcsh의 변수 대체

아래 예제는 작동하지 않습니다 (아마 배쉬에서 일 것이나 사용할 수 tcsh의 HAS) :

set VAR1 = value1 
set VAR2 = `echo ${VAR1:2}` 
echo VAR2 

그것은 오류 Bad : modifier in $ (2)와 함께 제공, 그것은 bash는 구문이다 분명히 있기 때문에 tcsh의 이해할 수없는 하지만 tcsh 인수를 사용하여이를 수행하는 방법을 이해할 수는 없습니다.

+0

오신 것을 환영합니다. 도움이되는 답변을 찾은 경우 언제든지 수락 및/또는 upvote. – shx2

답변

1

나는 수정을 사용하는 방법에 대한 확실하지 않다,하지만 당신은 cut 또는 sed를 사용하여 문자열을 슬라이스 할 수 있습니다 (

set VAR1=abcdef 

3 - 투 - 엔드

echo $VAR1 | cut -c3- 

캡처 모든 문자를 "절단" \(.*\)), 처음 2자를 제외한 (..)

echo $VAR1 | sed 's/..\(.*\)$/\1/' 
1

는 또한 대답 위 shx2 @에 나오지도 같은 정규식 등에서 특정 요소를 뽑아 오기와 펄 명령 행을 사용할 수 있습니다

echo $VAR1 | perl -pe 's/^\d\d(.*)/$1/' 

은 시작 처음 2 자리 숫자를 삭제합니다.

0

확실히 tcsh는 bash 스타일 수정자를 허용하지 않으며 그 반대의 경우도 마찬가지입니다. 그들은 매우 다른 껍질입니다.

6 자리 숫자의 마지막 4 자리를 추출해야한다고 말합니다. 그 숫자는 음수가 아닌 정수라고 가정합니다. 당신은 산술 문제로보다는 문자열 처리 문제로 생각한다면

, 당신은 사용할 수있는 내장 @ 명령을

% set VAR1 = 123456 
% @ VAR2 = $VAR1 % 10000 
% echo VAR1=$VAR1 VAR2=$VAR2 
VAR1=123456 VAR2=3456 
% 

(왜 tcsh의를 사용하는이 합니까? 필수 링크 : http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot.)