> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > Linux에서 sed 명령 사용 요약

Linux에서 sed 명령 사용 요약

藏色散人
풀어 주다: 2021-11-15 15:55:00
앞으로
2547명이 탐색했습니다.

Linux에서 sed 명령을 사용하는 방법 요약

Linux에서 Sed 명령:

1 sed에 대한 첫 소개

sed 편집기는 스트림 편집기라고 하는데, 이는 vim과 같은 대화형 텍스트 편집기와 다릅니다. , 명령에 따라 데이터 스트림의 데이터를 처리합니다. 다음 작업이 수행됩니다.

  • 입력에서 한 번에 한 줄의 데이터를 읽습니다. (모든 줄을 읽을 때까지 이 작업을 반복합니다.)

  • 편집기 명령에 따라 데이터 일치

  • 데이터 수정 Data

  • 새 데이터를 STDOUT(표준 출력)으로 출력

명령줄에 따라 데이터 흐름에서 sed 명령은 명령줄에서 입력하거나 명령 파일에서 읽을 수 있습니다.

sed -e script 添加script中指定的命令
sed -f file 添加file中指定的命令
로그인 후 복사

1.1 명령줄에서 sed 명령 정의 [권장 학습: linux 비디오 튜토리얼]

간단한 텍스트 대체 예를 살펴보겠습니다.

echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'
#修改文件
sed 's/xxx/kinsomy/' data.txt
#执行多个命令 用-e选项,分号隔开
sed 's/xxx/kinsomy/; s/***/hhh/' data.txt
로그인 후 복사

파이프를 통해 에코 출력 데이터를 sed에 입력하고, 그런 다음 s 명령을 사용하여 첫 번째 슬래시 뒤의 일치하는 데이터를 두 번째 슬래시 뒤의 데이터로 바꿉니다.

참고: sed는 텍스트 파일의 데이터를 연산하고 수정된 데이터만 STDOUT으로 출력하지만 파일 자체의 데이터는 수정하지 않습니다.

1.2 파일에서 읽기 명령

은 파일 script.sed에 정의되어 있습니다. 시리즈 쉽게 재사용할 수 있는 명령입니다.

s/*/a
s/x/b
s/-/+
로그인 후 복사

# -f选项指定命令文件
sed -f script.sed data.txt
로그인 후 복사

2 sed 기본

2.1 대체 태그

위의 예에서는 echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'는 각 줄 데이터에서 처음으로 일치하는 문자만 대체합니다. 그러나 데이터 행에 일치하는 항목이 여러 개 있는 경우 모두 바꿀 수는 없습니다.

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/'
#输出
hi,my name is kinsomy, i am xxx
로그인 후 복사

이때 일부 대체 플래그를 사용하여 대체 모드를 설정할 수 있습니다. 대체 토큰은 대체 문자열 뒤에 옵니다.

s/pattern/replacement/flags
로그인 후 복사

일치하는 데이터가 대체될 위치를 나타내는 숫자

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2'
#输出 第二个xxx被替换成kinsomy
hi,my name is xxx, i am kinsomy
로그인 후 복사

g 일치하는 모든 데이터의 대체를 나타내는

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g'
#输出 第二个xxx被替换成kinsomy
hi,my name is kinsomy, i am kinsomy
로그인 후 복사

p, 일치하는 행이 인쇄될 것임을 나타내는

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p'
#输出
hi,my name is kinsomy, i am xxx
hi,my name is kinsomy, i am xxx
로그인 후 복사
w,将替换后输出保存到指定文件
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'
로그인 후 복사

2.3 행 주소 지정

위에서 언급한 대로 sed 명령 한 줄씩 텍스트를 읽고 모든 줄을 통과할 때까지 데이터를 일치시킵니다. 이때 특정 줄에 대해 작업을 수행하려면 주소 지정 줄을 사용해야 합니다. 줄 주소 지정에는 두 가지 형식이 있습니다.

숫자 형식은 줄을 나타냅니다.

# 操作单行
$ sed '2s/xxx/***/' data.txt
# 操作一定行区间[2,4]
$ sed '2,4s/xxx/***/' data.txt
# 操作某行开始到最后[2,endline]
$ sed '2,$s/xxx/***/' data.txt
로그인 후 복사

텍스트 모드 필터

먼저 /etc/passwd에서 kinsomy 기록을 찾은 다음 bash를 csh로 바꿉니다. 텍스트 패턴 필터는 정규식과 함께 사용하면 매우 강력할 수 있습니다.

sed '/kinsomy/s/bash/csh/' /etc/passwd
로그인 후 복사

2.4 줄 삭제

텍스트를 삭제하려면 삭제 명령 d를 사용하세요.

# 删除所有文本
sed 'd' data.txt
# 删除单行
sed '2d' data.txt
# 删除行区间[2,3]
sed '2,3d' data.txt
# 删除行区间[2,endline]
sed '2,$d' data.txt
# 删除匹配文本aa的行
sed '/aa/d' data.txt
# 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除
sed '/1/,/3/d' data.txt
로그인 후 복사

2.5 텍스트 삽입 및 추가

Insert 명령 지정된 줄 앞에 새 줄을 추가합니다

Append 명령 a 지정된 줄 뒤에 새 줄을 추가합니다

# 追加
echo "Line 2" | sed 'a\
pipe quote> Line 1'
#插入
echo "Line 2" | sed 'i\
pipe quote> Line 1'
로그인 후 복사

2.6 줄 수정

c 명령은 줄을 수정하는 데 사용됩니다. of data

# 修改第三行文本
sed '3c\
pipe quote> change line ' data.txt
로그인 후 복사

2.7 변환 명령

명령 형식 sed 'y/inchar/outchar'

inchar의 문자를 하나씩 outchar 문자로 변환

echo "This 1 is a test of 1 try." | sed 'y/123/456/'
# 输出
This 4 is a test of 4 try.
로그인 후 복사

위 내용은 Linux에서 sed 명령 사용 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.im
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿