스크립트에 따라 표준 출력 결과를 편집하여 주는 명령어
실제 파일도 편집해 주는 편집기 역할을 한다.
SED [스크립트] [ 파일명] 형태로 사용한다.
주요 옵션
1. 옵션이 없을 경우 해당하는 행을 한 번더 출력한다.
2. -n : 해당하는 행만 출력한다. 거의 필수!!
3. -e : 스크립트를 여러개 사용할 수 있도록 한다. 4. -i : 파일을 실제로 수정하도록 한다. 정규식 : '/regex/p' : 정규식에 해당하는 행을 출력 '/n,/regex/p' : n번째부터 정규식에 해당하는 행을 발견할때까지의 행을 출력 정규식은 '/regex/,/regex/p' 와 같이 여러 개를 지정 가능하다. (or 조건으로 동작한다)
스크립트 명령어 p (print): 해당하는 행을 출력하여 주는 명령어 => 'm,np' : m번째부터 n번째까지의 행을 출력해준다.
-n을 써줘야하는 이유는 반복적으로 나오기 때문에 -n을 사용하여 내가 보고자 하는 행만 출력할 수 있게 해줘야 한다.
정규식 : '/regex/p' : 정규식에 해당하는 행을 출력
대문자 R이나 소문자r로 시작하는 것을 etc/passwd에서 출력해줘 라는 의미이다.
이렇게 sed명령어로 정규식에 해당하는 애만 출력할 수 있다.
'/n,/regex/p' : n번째부터 정규식에 해당하는 행을 발견할때까지의 행을 출력
== 5번째 행부터 root를 발견할 때까지 행을 출력해줘 ==root를 발견하면 거기서 출력멈춰!
정규식은 '/regex/,/regex/p' 와 같이 여러 개를 지정 가능하다. (or 조건으로 동작한다)
adm과 lp과 포함되어 있는 것을 호출해줘
----------------------------------------------------------------------------------------------------------------------
d(delete) 명령어
해당하는 행을 삭제하는 명령어
'nd' : n번째 행을 삭제하고 출력 => -n옵션 필요없다.
[root@localhost tmp]# sed '1d' /etc/passwd ==1번째 행 삭제하고 출력해줘
'm,nd' : m번째부터 n번째까지 삭제하고 출력
[root@localhost tmp]# sed '5,45d' /etc/passwd ==5번째부터 45번째까지 삭제한다
'n,$d' : n번째 부터 마지막 라인까지 삭제하고 출력
5번째부터 마지막라인까지 다 삭제 ==1번째부터 5번째만 남기고 다 삭제
/regex/d : 정규식이 포함된 라인만 삭제하고 출력
[root@localhost tmp]# sed '/[Rr]oot/d' /etc/passwd
=> Root, root를 포함한 것을 삭제한 후 출력
---------------------------------------------------------------------------------------------------------------------------------
s (substitution) 명령어 ==치환
: 해당하는 정규식을 치환하여 주는 명령어
's/regex/string/' : 정규식에 대응하는 문자를 입력한 문자로 치환하여 출력한다.
Root, root를 !!로 바꾼다!
1번줄 을 보면 !!가 보이고 마지막 operator도 원래 root가 있었는데 !!로 바뀌었다.
1번줄 초록색을 보면 뒤에 root는 바뀌지 않았는데 그 이유는 행마다 조회했을 때
root를 만나면 치환해주고 그 이후의 것은 대응하지 않기 때문이다.
만약 그 뒤의 문자도 대응하게 하려면 /g 옵션을 넣어야 한다.
'/s/regex/string/g' : 정규식에 대응하는 문자가 여러개 있을 경우 모두 치환하여 출력
다 바뀌었다!!
'm,ns/regex/string/g : m번째에서 n번째 행의 정규식에 대응하는 문자를 입력한 문자로 치환하여 출력
1,3행만 치환한다고 하여 operator의 root는 바뀌지 않은 것을 알 수 있다.
-i
file01.txt.에 This is File File is SED Test File이라고 편집한 후에 sed의 s명령어로 File을 !!로 바꾸는 명령어 이다.
그러나 cat으로 file01.txt.를 읽어보면 바뀌지 않은 것을 알 수 있다.
이때 -i 옵션을 넣어서 명령어를 작성하면 vi도 편집하는 것을 알 수 있다.
=====================================================================
'리눅스' 카테고리의 다른 글
for 문의 continue문 활용하기 (0) | 2021.11.22 |
---|---|
셸 스크립트 프로그래밍 (0) | 2021.11.04 |
AWK (0) | 2021.10.27 |
명령어 , 파일디스크립터, GREP (0) | 2021.10.26 |
매개변수 확장 (0) | 2021.10.26 |
댓글