bash script2023. 10. 16. 08:44

 

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

간단한 내용이지만 의외로 사용할 일이 많아서 여기에 정리해 두기로.

출력 결과의 앞쪽에 공백이 여러칸 있는 경우, sed의 문자열 대체 기능을 이용해서 제거할 수 있다. 아래의 예시를 보자.

# 기본 예시: sed에서 문자열 abc를 123으로 대체
echo "abcd" | sed 's/abc/123/'
123d

# test1.txt 파일의 내용 출력
cat test.txt
  abc
  def
  ghi

위의 경우 맨 앞의 공백이 동일하게 2칸씩이다. 이런 경우는 아래와 같이 제거해 주면 되겠다. 정규표현식(regular expression, regex)에서 행 맨처음을 나타내는 "^" 기호를 사용한다.

# test1.txt 출력, 각 행 앞쪽의 공백 2칸 제거
cat test1.txt | sed 's/^  //'  
abc
def
ghi

행 앞의 공백 칸수가 일정하지 않은 경우에는 아래와 같이 제거해 주면 된다. 개수가 불분명하므로 sed에서 문자열 대체를 지정할 때 "*" 기호를 사용한다.

# test2.txt 파일의 내용 출력
cat test2.txt
 123
   456
   789
  abc
 
# test2.txt 출력, 각 행 앞쪽의 공백 제거
cat test2.txt | sed 's/^ *//'
123
456
789
abc

728x90
Posted by 반달가면