2013-09-01 3 views
0

처음과 마지막 위치를 사용하여 줄에서 부분 문자열을 추출해야합니다. 나는 grep으로 쉽게해야한다고 생각하지만 여전히 방법을 알아 내지 못했다.인덱스 위치로 부분 문자열 가져 오기

예를 들어, n 개의 문자 행은 k 위치에서 시작하여 해당 행의 l 위치에서 끝나는 부분 문자열을 추출하려고합니다. > K

답변

3

awk를 사용하지

분명히 리터와

, < N 및 L 케이?

echo "12345678" | awk '{print substr($0, 3, 2);}' 
# prints '34' 
+0

고마워 오빠! – user2266881

+0

당신을 진심으로 환영합니다. awk는 파일의 각 라인에 이것을 적용 할 것입니다. 파일을 관리하거나 여러 줄을 입력하는 방법을 모르겠습니다. 검색하면'awk'로 더 많은 일을 할 수 있습니다. –

-1

이게 당신이 원하는 것입니까?

String test = "ateststring"; 
    String testa = test.substring(0,4); 
    String test2 = testa.substring(0,3); 
    int testc = test.indexOf("test"); 
    String test3 = test.substring(testc,5); 

    System.out.println(test + ":" + testa + ":" + test2 + ":" +test3); 
1

당신은 당신이 할 수 떠들썩한 파티를 사용하는 경우 만 수행

LINE="strings" 
K=3 ## 4th character starting from index 0 
L=5 ## 6th character starting from index 0 
echo "${LINE:K:L - K + 1}" 

파일에 대한 루프에 : 그 L을 내놓고 AWK에 관해서는

while -r read LINE; do echo "${LINE:K - 1:L - K}"; done < file 

는 위치를 의미하지 0이 시작 인덱스 인 길이 :

awk -v k="3" -v l="5" '{ n = length; print substr($0, k, l - k + 1);}' < file 
2

잘라 내기가 좋은 선택입니다. 를 사용

$ echo "123456" | cut -c2-4 
234 

$ echo "123456" | cut -c1,3,6 
136 

$ echo "123456" | cut -c1-3,6 
1236 
0

: 당신은 범위와 개별 필드를 선택할 수 있습니다

k=3 
echo '123456789' | sed 's/^.\{'$k'\}//' 

출력 :

456789 
관련 문제