2008-09-08 6 views

답변

29

당신은 3 '필드', 예를 들어 각각의에서 얻을 수있는 cut command을 사용할 수 있습니다 : "-f"

$ echo "system-source-yyyymmdd.dat" | cut -d'-' -f2 
source 

"-d"구분 기호를 지정, 당신은

을 필요로하는 필드의 수를 지정합니다
+0

# 프롬프트가 추가 된 이유가 궁금합니다. 일반적으로이 프롬프트는 루트 또는 수퍼 유저를 나타냅니다. 일반적으로, 나는 ** cut ** 명령어를 시험해 보는 것과 같은 것들이 일반 사용자로서 더 잘 될 것이라고 생각한다. 나는 $ 프롬프트를 사용했을 것이다. –

+0

오, 그래 - 좋은 지적이야. 나는 그 당시 루트로 로그인되어 있었고 단순히 그걸로 갔다는 것을 인정해야한다. 나쁜 습관이다. 그런 말로하면 에코와 컷은 가장 해로운 명령 중 두 가지라고 생각합니다. :) 그러나 완성도를 위해 예제를 즉시 업데이트 할 것입니다. 건배. –

+0

출력에 변수를 어떻게 할당 할 수 있습니까? 만약 내가'var = "system-source-yyyymmdd.dat"| cut -d'- '-f2'는 작동하지 않습니다. – EsseTi

7

cut 명령을 사용하십시오.

echo "system-source-yyyymmdd.dat" | cut -f1 -d'-' 

은 첫 번째 비트를 추출합니다.

-f 매개 변수의 값을 변경하여 적절한 부분을 가져옵니다.

여기에 Cut 명령에 대한 안내서가 있습니다.

8

필요에 따라 awk은 절단보다 유연합니다. 제 티저 :

# echo "system-source-yyyymmdd.dat" \ 
    |awk -F- '{printf "System: %s\nSource: %s\nYear: %s\nMonth: %s\nDay: %s\n", 
       $1,$2,substr($3,1,4),substr($3,5,2),substr($3,7,2)}' 
System: system 
Source: source 
Year: yyyy 
Month: mm 
Day: dd 

문제 '유연'로 AWK 설명하면 아이폰 향상된 휴대 전화 ;-)

1

또 다른 방법은 셀의 내부 분석 도구를 사용하는 호출처럼 확실히인지되는 피 만드는 자식 프로세스의 비용 :

 
oIFS=$IFS 
IFS=- 
file="system-source-yyyymmdd.dat" 
set $file 
IFS=$oIFS 
echo "Source is $2" 
8

내 마음에 (좋은 우아한에만 내장 기능을 사용하여 배열

var='system-source-yyyymmdd.dat' 
parts=(${var//-/ }) 
에 넣어하는 것입니다 :-) 파일 이름이 같은 공간, 또는, 하늘이 금지, 시세, 역 인용 부호로 "이상한"문자가 포함 된 경우이 작동하지 않습니다 16,

그런 다음, 당신은

echo ${parts[0]} ==> system 
echo ${parts[1]} ==> source 
echo ${parts[2]} ==> yyyymmdd.dat 

주의해야 할 점은 ... 배열의 부분을 찾을 수 있습니다. ..

관련 문제