Linux 사용시 파일 내부의 특정 표현을 수정하고자 하는 경우 sed 명령어를 활용할 수 있다.


sed 의 기본적인 형태는 아래와 같다.

sed <options> <address> <commands> <filename>

<options>

-n : suppress automatic printing (sed는 Matching 되는 Line 외에도 모든 Line 을 기본적으로 printing 하는데, line number 를 출력하고자 하는 경우(command =) 또는, Matching 되는 line 만 출력하고자 하는 경우(command /p)에는 -n option을 활용하면 된다.)

<address>

number : Match only the line number

/regular_expression/ : Match lines matching the regular_expression

addr1,addr2 : Match lines from addr1 to addr 2

addr,+N : Match addr and the following N lines

addr,~N : Match lines from addr to N*addr

<commands>

= : print the line number

/p : print the line

s/regular_expression/replacement : replace 


다만, 순전히 내 기준에서 가장 많이 사용하는 sed의 형태는 아래와 같다.

sed s/<regular_expression>/<replace>/g <file>

여기서 /g는 vim에서 replace 할 때의 /g 와 마찬가지로, 여러 개가 매칭 되는 경우 여러번 실행하도록 하는 옵션


sed 는 <file> 로 부터 <regular_expression> 을 찾아 <replace> 로 치환하여, 표준 출력을 해준다.

이는 vim 에서 replace 하는 것과 비슷하다.

결과물이 표준 출력 되기 때문에, 아래와 같이 > 또는 >> 를 이용해 파일에 써줄 수 있다.

다만, 여기서 파일이 이름이 같은 경우 아무것도 써지지 않는다는 점을 유의하자.

sed s/<regular_expression/<replace>/g <input_file> > <output_file>


아래는 예시

sed s/^$//g test.txt > test.txt.tmp

mv test.txt.tmp test.txt

(test.txt 파일로 부터 공백인 행을 없애 test.txt.tmp 파일에 출력한다.)


'Programming > Linux' 카테고리의 다른 글

Linux HDD mount  (0) 2018.04.06
HandBrakeCLI  (0) 2018.04.06
Linux find  (0) 2018.02.04
Ubuntu sources.list generation  (0) 2017.09.06
Ubuntu Redshift  (0) 2017.07.02

+ Recent posts