반달가면 이글루에서 백업 - bahndal.egloos.com/451901
일단 my_file.txt에서 홀수번째 행만 골라서 출력하는 경우를 생각해 보자. 이 예시를 보면 짝수번째 행을 고른다던가 5, 10, 15... 번째 행만 고르는 경우도 저절로 감이 잡힐 것이다.
# my_file.txt의 홀수번째 행만 출력
print=p
max_line=`cat my_file.txt | wc -l`
for line_num in `seq 1 2 $max_line`
do
sed -n $line_num$print my_file.txt
done
우선 my_file.txt에 행이 몇개나 되는지 계산해서 이 값을 변수 max_line에 할당하고, seq 명령을 이용해서 1부터 $max_line까지 홀수를 만든 후 for 반복문에 적용했다.
sed 명령을 이용해서 파일의 특정 행을 출력하는 방법은 아래와 같다.
sed -n [행번호]p [파일명]
# my_file.txt에서 12번째 행을 출력
sed -n 12p my_file.txt
여기서는 행번호가 변수 line_num이므로 여기에 p를 같이 쓰면 변수 line_nump로 해석된다. 이를 방지하기 위해 p를 변수 print에 할당하고 $line_num$print 이런 식으로 사용.
또한 -n 옵션을 주지 않으면 지정된 행을 출력한 후 파일 내용 전체를 출력하게 되므로 잊지 말고 -n 옵션을 써서 해당되는 행만 출력되도록 하자.
짝수행만 고르고 싶다면 for 명령에 적용한 seq 부분을 `seq 2 2 $max_line` 이런 식으로 바꾸면 되겠다. 출력하려는 행을 정하기 위해 이용한 seq 명령에 대한 설명은 이전 게시물을 참조하자. 기본적으로 형식은 아래와 같다.
seq [시작번호] [간격] [끝번호]
참고로 파일의 특정 부분, 예를 들어 3번째 행부터 15번째 행까지를 골라내고 싶다면 아래와 같은 형식으로 사용하면 되겠다.
# 형식: sed -n [시작행],[마지막행]p [파일명]
sed -n 3,15p my_file.txt
'bash script' 카테고리의 다른 글
[bash: find, cp] 조건에 맞는 파일을 찾아 복사하기 (0) | 2020.12.02 |
---|---|
[bash: split, cat] 파일 분할/재조립 (0) | 2020.11.26 |
[bash: grep] 정확히 일치하는 문자열 찾기 (0) | 2020.11.16 |
[bash: function] 함수 만들기 (0) | 2020.11.10 |
[bash: grep] 정규표현 비활성화 (0) | 2020.11.09 |