반달가면 이글루에서 백업 - 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"
항목 수가 일정하지 않은 내용이 저장된 문서 파일에서 뒤쪽에서부터 단어를 세서 특정 위치의 단어를 뽑아내야 할 때 매우 요긴하게 사용할 수 있다.
'bash script' 카테고리의 다른 글
[bash: sleep] 1초 미만으로 쉬기 (0) | 2021.01.14 |
---|---|
[bash: mktemp] 안전하게 임시 파일/디렉토리 만들기 (0) | 2021.01.06 |
[bash: mv, rename] 파일/디렉토리 이름 바꾸기 (한개 또는 여러개 한꺼번에) (0) | 2020.12.23 |
[bash: echo] 탭(tab) 출력할 때 따옴표(")의 중요성 (0) | 2020.12.16 |
[bash: find, cp] 조건에 맞는 파일을 찾아 복사하기 (0) | 2020.12.02 |