나오지도 리눅스 빈 줄을 삭제하는 응용 프로그램

A, 나오지 편집기 프리젠 테이션

SED 편집기라고 같은 스트림 편집기 (스트림 편집기), 정상 대화식 텍스트 편집기 반대. 대화 형 텍스트 편집기 (예 : 정력 등)에서는, 대화 형으로 삽입 키보드 명령을 사용하여 삭제 또는 텍스트 데이터를 대체 할 수 있습니다. 편집에 스트림 편집기는 데이터 스트림은 이전 데이터 편집기를 처리에게 사전 제공 한 일련의 규칙을 기반으로합니다.
파일 (즉, 스크립트 파일)에 저장된 명령 또는 명령 라인으로부터 텍스트 중 하나를 입력되는 명령에 따라 데이터 스트림을 처리 할 수있다 나오지 편집기. 나오지 편집기가 수행하는 다음 작업 :

  • 순차적으로 입력 라인으로부터 데이터를 읽고
  • 데이터 매칭 편집 명령은 제공된
  • 데이터 수정하기 위해 스트리밍
  • STDOUT에 새로운 입력 데이터의 출력

데이터의 라인과 일치하는 모든 명령 스트림 편집기가 완료되면, 다음 라인 데이터를 읽고 모든 데이터가 처리 종료 될 때까지 과정을 반복합니다.
다음과 같이 나오지 명령의 형식은

나오지도 옵션 스크립트 파일

두, 나오지도 삭제 빈 라인

설명 :하지 않을 경우 자신의 학습에, 독자가 일반에 대한 기본 지식을 가지고 있다는 가정을 사용하기 전에

1. 삭제 연속 빈 라인

당신이 우리의 텍스트의 각 라인 사이에 빈 줄의 변수 번호가있는 경우, 상당한 노력하지 아름답고, 우리가 줄 간격은 단지 빈 줄, 우리는 다음과 같은 스크립트를 사용할 수있는 등, 각 라인 사이에 고정 간격을 원하는을 읽어 :

/./, / ^ $ /! D

간격 /./ / ^ $ / 주소 끝의 시작은 적어도 하나 개의 캐릭터 라인을 포함하는 모든 불매 운동을 일치, 간격이 빈 줄을 일치,이 범위의 라인은 삭제되지 않습니다합니다.

~$ cat example1
Such stories set us thinking, 

wondering what we should do under similar circumstances. 


What events, what experiences, 

what associations should we crowd into those last hours as mortal beings, 


what regrets?
~$ sed '/./,/^$/!d' example1
Such stories set us thinking, 

wondering what we should do under similar circumstances. 

What events, what experiences, 

what associations should we crowd into those last hours as mortal beings, 

what regrets?
~$

원래 불규칙한 빈 줄이 균일하게된다. 마지막 행 후 예 아니오 내용은 다음 텍스트의 마지막 행 다음에 빈 줄, 빈 줄 치료의 라인이있는 경우.

의 시작 2. 제거 빈 라인

여러 행의 빈의 시작 부분에 텍스트의 일부는 분명히 불편을 읽을됩니다. 생각의 시작 부분에 삭제 빈 라인 위의 매우 유사, 우리는 다음과 같은 스크립트를 사용할 수 있습니다 :

/./, $! D

이 스크립트는 끝날 때까지, 컨텐츠의 이러한 범위는 첫 번째 행의 빈 공식적으로 내용을 삭제하기 전에, 즉, 제거됩니다, 문자의 줄에서 시작해야합니다.

~$ cat example2



Such stories set us thinking, 

wondering what we should do under similar circumstances. 
What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?
~$ sed '/./, $!d' example2
Such stories set us thinking, 

wondering what we should do under similar circumstances. 
What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?
~$

3. 제거 뒤 빈 라인

에서 삭제 연속 빈 라인 우리가 언급, 마지막 줄의 처리 어쩌면 이것은 우리가 원하는 결과 아닌, 한 줄의 빈 라인을 포함, 우리가 마지막 줄은 빈 줄을 포함하지 않는 싶어, 우리는 다음과 같은 스크립트를 사용할 수 있습니다

나오지 '{
: 시작
/ ^ \ N- 형 *의 $ / $ {D, N, 시작} b를
}'

이 스크립트는 전체 스크립트를 명령 할 수 있도록 일반 스크립트 또한 중괄호 중괄호 복잡 조금, 것처럼 보일 수 있습니다 명령 패킷의 일부는 명령 패킷이 지정된 주소에 적용됩니다. 여기에 사용되는 지점 라벨 (B)를, 점프는 사이클 C 언어로, 달성 될 수있다. 함축 된 의미는 하나의 줄 바꿈이있는 줄뿐만 아니라 마지막 줄을 발견하면, 다음, 삭제, 그렇지 않으면 다음 경기를 계속하는 것입니다.

~$ cat example3
Such stories set us thinking, 

wondering what we should do under similar circumstances. 

What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?

~$ sed '{
:start
/^\n*$/{$d; N; b start}
}' example3
Such stories set us thinking, 

wondering what we should do under similar circumstances. 

What events, what experiences, 
what associations should we crowd into those last hours as mortal beings, 
what regrets?
~$

4. 제거 HTML 태그

우리는 HTML 태그 정보를 많이 포함하고 일부 페이지에 많은 정보를 얻기 위해 명령 줄을 사용하는 것은 우리가 그들을 얻을 기본 메시지에 도움이되지 않습니다, 우리가 일반 텍스트로 포맷해야, 우리는 다음과 같은 스크립트를 사용할 수 있습니다 :

S / <[^>] *> // g; / ^ $ / D
** 예 **
~$ cat example4
<html>
<head>
<title>This is the page</title>
</head>
<body>
<p>
This is the first line in the web page
This should provide some useful
information to use in our sed script
</p>
</body>
</html>
~$ sed -e 's/<[^>]*>//g ; /^$/d' data.txt
This is the page
This is the first line in the web page
This should provide some useful
information to use in our sed script
~$

설명 : 일부 태그는 일부 공간이나 탭을 추가 뒤에 줄 바꿈 후, 공백이나 탭을 포함하지 않는 즉시 각 행의 Example4를 내용, 독자, 시도 할 수, 결과의 컨텐츠는 다를 것이다.

우리는주의 모든 콘텐츠가 여기에 다섯 개 들여 쓰기,하지만 우리의 표준 HTML 구조는 일반적으로 다음의 예와 같은 다양한 들여 쓰기 관계를 포함 것을 발견 할 것이다 지불

~$ cat example5
<html>
	<head>
		<title>This is the page</title>
	</head>
		<body>
		<p>
		This is the first line in the web page
		This should provide some useful
		information to use in our sed script
		</p>
	</body>
</html>
~$ sed -e 's/<[^>]*>//g ; /^$/d' example5
	
		This is the page
	
		
		
		This is the first line in the web page
		This should provide some useful
		information to use in our sed script
		
	
~$

태그가 삭제하지만, 빈 라인, 그러나 어떤 코스 존재하며, 왜? 우리는 출력을 저장 한 다음 특정 콘텐츠 내부 봐 -t 고양이를 사용합니다 :

~$ sed -e 's/<[^>]*>//g ; /^$/d' data.txt > test
~$ cat -t test 
^I
^I^IThis is the page
^I
^I^I
^I^I
^I^IThis is the first line in the web page
^I^IThis should provide some useful
^I^Iinformation to use in our sed script
^I^I
^I
~$

당신은 각각의 빈 줄의 텍스트는 인쇄 할 수없는 문자가 실제로 존재입니다 볼 수 있습니다 ^는 I 탭을 나타내며, 그가 경기에 실행 된 / ^ $ / d로 , 두 사람은, 그래서 삭제 빈 라인과 일치하지 않습니다 작업이 수행되지 않습니다. 그래서 규칙을 수정하는 것이 필요하다 :

S / <[^>] *> // g; / ^ [: 공간 :] * $ / D
차이가 중간 빈 광고 매칭이 증가한다는 것이다 [: 공간] * [[: 공간] 공백, 탭, NL, FF, VT 및 CR을 포함하는 임의의 공백 문자를 나타낸다. 다음과 같이 결과의 구현이다 :
~$ sed -e 's/<[^>]*>//g ; /^[[:space:]]*$/d' example5
		This is the page
		This is the first line in the web page
		This should provide some useful
		information to use in our sed script
~$

당신은 볼 위에 빈 행을 삭제,하지만 우리는 그 부분의 빈 다시 위의 기준으로 삭제 처리 할 수 ​​있도록, 각 행 사이의 간격의 어느 부분이 수, 수정 된 규칙은 다음이다

S / <[^>] *> // g; / ^ [: 공간 :] * $ / D, S / ^ [: 공간 :] * $ // g
우리는 그래서 삭제 달성하기, 공간이나 TAB 매칭 교체의 각 라인을 시작합니다
~$ sed -e 's/<[^>]*>//g ; /^[[:space:]]*$/d; s/^[[:space:]]*//g' example5
This is the page
This is the first line in the web page
This should provide some useful
information to use in our sed script
~$

이제 효과는 훨씬 더, 당신은 지정된 파일에 출력을 리디렉션 할 수있다.

게시 25 개 원래 기사 · 원 찬양 23 ·은 10000 +를 볼

추천

출처blog.csdn.net/Secur17y/article/details/100895144