bash script2020. 12. 28. 18:41

 

반달가면 이글루에서 백업 - bahndal.egloos.com/473444

 

일단 통상적인 cut 명령부터. cut 명령을 사용하면 특정 구분자(-d 옵션)를 기준으로 앞에서부터 세서 특정 위치(-f 옵션)의 문자열을 가져올 수 있다. 아래의 예시를 보자.

# 구분자는 공백, 두번째 문자열 가져오기
echo "abc def:ghi jk l" | cut -d' ' -f2
def:ghi (출력 결과)

# 구분자는 콜론(:), 첫번째 문자열 가져오기
echo "abc def:ghi jk l" | cut -d':' -f1
abc def

자, 그렇다면 특정 구분자를 기준으로 뒤에서부터 순서를 세려면 어떻게 할 것인가? 즉, 위의 예시에서 뒤에서 두번째 문자열을 가져오는 문제이다.

이 문제를 해결하기 위해서는 rev 명령을 이용하면 된다. rev 명령은 문자열을 뒤에서 앞으로 재배열하는 기능을 해 준다. 아래의 예시를 보자.

# rev 명령을 이용해서 역순으로 재배열하기
echo "abcd" | rev
dcba (abcd의 역순 재배열)

이제 금방 감이 잡힐 것이다. 문자열을 뒤집은 후에 cut 명령으로 앞에서부터 순서를 센 후, 다시 뒤집으면 된다!

# 구분자는 공백, 뒤에서 두번째 문자열 가져오기
echo "abc def:ghi jk l" | rev | cut -d' ' -f2 | rev
jk

# 구분자는 콜론, 뒤에서 첫번째 문자열 가져오기
echo "abc def:ghi jk l" | rev | cut -d':' -f1 | rev
ghi jk l

 

# 파일의 확장자 식별하기 예시

file_name="J.S.Bach-Invention_No.1_BWV772.mp3"

file_ext=`echo "$filename" | rev | cut -d'.' -f1 | rev`

echo "the extension is $file_ext"

 

항목 수가 일정하지 않은 내용이 저장된 문서 파일에서 뒤쪽에서부터 단어를 세서 특정 위치의 단어를 뽑아내야 할 때 매우 요긴하게 사용할 수 있다.

 

 

728x90
Posted by 반달가면