Linux에서는 sed 명령을 사용하여 지정된 파일의 특정 줄을 삭제할 수 있습니다. "sed 'M,Nd' 파일 이름" 문을 실행하면 M부터 N까지 연속된 줄의 내용을 삭제할 수 있습니다. "sed 'N1d를 실행합니다. ;N2d; N3d;$d' 파일 이름" 문은 연속되지 않은 줄 N1, N2, N3의 내용을 삭제할 수 있습니다. 특정 문자가 포함된 줄을 삭제하려면 "sed '/특정 문자/d' 파일 이름" 문을 실행하세요. " sed '/ ^특정 문자/d' 파일 이름" 문은 특정 문자로 시작하는 줄을 삭제할 수 있습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
Linux에서는 sed 명령을 사용하여 지정된 파일의 특정 줄을 삭제할 수 있습니다.
sed는 Stream Editor의 약자로 Linux에서 기본적인 텍스트 변환에 사용되며 파일 작업에 중요한 명령이므로 텍스트를 삭제할 수도 있습니다.
다음은 대부분의 사용 시나리오를 다루는 sed 명령의 몇 가지 사용 예입니다. sed 명령을 얕은 것부터 깊은 것까지 학습하여 특정 파일 줄을 쉽고 효율적으로 삭제할 수 있습니다.
먼저 데모 파일 sed-demo.txt를 준비하고 파일 내용을 살펴봅니다
cat sed-demo.txt
그런 다음 sed 명령을 사용하여 실험할 수 있습니다.
1. 특정 줄 삭제
먼저 첫 번째 줄과 마지막 줄을 삭제하는 등 실제로는 N 번째 줄을 삭제하는 것부터 시작합니다.
N번째 줄을 삭제하는 명령 형식:
sed 'Nd' file
첫 번째 줄을 삭제해 보겠습니다.
sed '1d' sed-demo.txt
아주 간단하죠? 여기서는 별다른 설명이 없을 것입니다. 어느 줄의 내용을 삭제하려면 명령에서 1만 바꾸면 됩니다.
그렇다면 마지막 줄을 나타내는 데 사용된 숫자는 무엇입니까? 여기에 작은 팁이 있습니다. 달러 기호 $를 사용하여 끝을 나타낼 수 있으므로 마지막 줄을 삭제하는 명령은 다음과 같이 작성할 수 있습니다:
sed '$d' sed-demo.txt
2 특정 줄 삭제
.sed 명령은 연속 또는 불연속 행 내용을 삭제할 수 있습니다.
연속 행 삭제(예: 5~7행 삭제):
sed '5,7d' sed-demo.txt
1번째, 5번째, 9번째 및 마지막 행 삭제와 같은 비연속 행 삭제:
sed '1d;5d;9d;$d' sed-demo.txt
또한 3~6행을 제외한 다른 행 삭제와 같은 논리적 NOT!과 함께 사용할 수도 있습니다.
sed '3,6!d' sed-demo.txt
3. 빈 행 삭제
sed는 파일에서 빈 행 삭제도 지원합니다. 명령은 다음과 같습니다. :
sed '/^$/d' sed-demo.txt
팁: 여기서 두 개의 슬래시 안에 있는 표현식은 텍스트 일치의 역할을 합니다. 정규 표현식의 사용법을 참고할 수 있습니다. 다음은 모든 사람의 학습을 심화하기 위해 일반적으로 사용되는 몇 가지 방법입니다.
4. 특정 문자가 포함된 줄 삭제
샘플 파일에서 System이라는 단어가 포함된 줄을 삭제하고 싶다면 /System/을 사용할 수 있습니다. 즉, System이라는 문자열이 나타나면 Match를 진행합니다. 구체적인 명령은 다음과 같습니다:
sed '/System/d' sed-demo.txt
뿐만 아니라 논리적 조건을 추가할 수도 있습니다. 예를 들어 다음 명령은 다음과 같습니다.
sed '/System\|Linux/d' sed-demo.txt
기호 |
는 논리적 OR을 나타내며, 위 명령의 의미는 다음과 같습니다. 시스템 또는 Linux가 포함된 줄은 삭제해야 합니다.
5. 특정 문자로 시작하는 줄 삭제
먼저 더 나은 설명을 위해 또 다른 샘플 파일 sed-demo-1.txt를 만듭니다. 내용은 다음과 같습니다.
cat sed-demo-1.txt
이미 위에서 언급했습니다. 앞서 언급한 $ 기호는 끝으로 이해될 수 있는데, 시작을 나타낼 수 있는 문자가 있나요? 대답은 '예'입니다. 여기서는 ^ 기호를 사용하여 시작을 나타낼 수 있습니다.
따라서 특정 문자로 시작하는 줄을 삭제하려면, 예를 들어 R로 시작하는 줄을 삭제하려면 다음 명령을 사용할 수 있습니다.
sed '/^R/d' sed-demo-1.txt
那么问题来了,比如我想删除以 R 或者 F 开头的行,那我是不是要执行两次命令呢?如果是有更多岂不是要执行多次命令?这里它有一个简单的写法,你只要把这些字符写在一对中括号 [] 里就可以了:
sed '/^[RF]/d' sed-demo-1.txt
上面命令的作用是 删除以 R 或者 F 开头的行。
6. 删除特定字符结尾的行
同上面一个道理,删除以某一个字符结尾的行,比方说删除以 m 结尾的行,我们可以这样做:
sed '/m$/d' sed-demo.txt
删除以 x 或 m 结尾的行可以这样写:
sed '/[xm]$/d' sed-demo.txt
7. 删除以大写字母开头的行
这里问题又来了,我想要删除所有以大写字母开头的行呢?按照上面的做法是不是要将 A 到 Z 这 26 个字母都写进 [ ] 里呢?其实我们大可不必这样做,在 A 和 Z 中间加个 - 就可以了:
sed '/^[A-Z]/d' sed-demo-1.txt
机智的你看到这里肯定会想到其他类似的用法的了,不妨看看下面是否有你想到的命令吧。
8. 删除包含字母字符的行
sed '/[A-Za-z]/d' sed-demo-1.txt
9. 删除包含数字的行
sed '/[0-9]/d' sed-demo-1.txt
另外,通过这个例子,我们可以加上 ^ 和 $ 更好地看到他们之间的区别:
sed '/^[0-9]/d' sed-demo-1.txt
sed '/[0-9]$/d' sed-demo-1.txt
相关推荐:《Linux视频教程》
위 내용은 Linux에서 파일의 특정 줄을 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!