Linux 텍스트 처리 삼 총사: grep, sed, awk
awk, grep, sed 는 Liux 가 텍스트 를 조작 하 는 3 대 이기 로 텍스트 3 검 객 이 라 고 부 르 며 반드시 파악 해 야 할 Liux 명령 중 하나 입 니 다.세 가지 기능 은 모두 텍스트 를 처리 하 는 것 이지 만 중점 은 각각 다 릅 니 다. 그 중에서 awk 기능 이 가장 강하 지만 가장 복잡 합 니 다.grep 는 단순 한 검색 이나 일치 하 는 텍스트 에 더욱 적합 하 며, sed 는 일치 하 는 텍스트 를 편집 하 는 데 더욱 적합 하 며, awk 는 텍스트 를 포맷 하 는 데 더욱 적합 하 며, 텍스트 를 복잡 한 형식 으로 처리 합 니 다.
grep
Linux 시스템 에서 grep 명령 은 강력 한 텍스트 검색 도구 입 니 다. 정규 표현 식 으로 텍스트 를 검색 하고 일치 하 는 줄 을 인쇄 할 수 있 습 니 다.grep 는 전역 정규 표현 식 버 전 을 나타 내 는 Global Regular Expression Print 라 고 합 니 다. 사용 권한 은 모든 사용자 입 니 다.
grep 는 셸 스 크 립 트 에 사용 할 수 있 습 니 다. grep 는 상태 값 을 되 돌려 검색 상 태 를 설명 하기 때 문 입 니 다. 템 플 릿 검색 에 성공 하면 0 으로 되 돌아 갑 니 다. 검색 에 성공 하지 못 하면 1 로 되 돌아 갑 니 다. 검색 한 파일 이 존재 하지 않 으 면 2 로 되 돌아 갑 니 다.우 리 는 이 반환 값 을 이용 하여 자동 화 된 텍스트 처리 작업 을 할 수 있다.
명령 의 기본 형식:
grep [option] pattern file
이 명령 에 익숙 하지 않 더 라 도 대부분의 학생 들 은 프로 세 스 조회 명령 을 사용 한 적 이 있 을 것 이다.
ps -ef|grep xxxx
이것 은 grep 의 기본 적 인 용법 입 니 다. 모든 프로 세 스 에서 어떤 프로 세 스 를 검색 합 니 다.
grep 에서 자주 사용 하 는 매개 변 수 는 다음 과 같 습 니 다.
PATTERN
일치 fgrep
pattern
일치 하 는 줄 은 [^] 역방향 일치 앞의 세 개의 A, B, C 매개 변 수 는 쉽게 이해 할 수 있 습 니 다. 밤 을 들 어 우리 가 파일 이 있다 고 가정 하면 파일 이름 은 test 이 고 내용 은 1 부터 9 까지 모든 숫자 줄 입 니 다.
➜ grep -A2 7 test
7
8
9
-A2 7
7 을 찾 아서 7 뒤에 두 줄 을 출력 하 는 효과 가 있 습 니 다.같은 이치 로
-B2 7
와 -C2 7
는 7 을 찾 은 다음 에 각각 7 앞의 두 줄 과 앞 뒤 두 줄 을 출력 한다.➜ grep -B2 7 test
5
6
7
➜ grep -C2 7 test
5
6
7
8
9
계속, 우리 가 test 라 는 파일 의 내용 이 다음 과 같다 고 가정 합 니 다.
➜ cat test
aaaa
bbbbbb
AAAaaa
BBBBASDABBDA
grep -c
명령 의 역할 은 출력 이 일치 하 는 줄 수 입 니 다. 예 를 들 어 우 리 는 aaa
을 포함 하 는 몇 줄 을 찾 고 싶 습 니 다. 한눈 에 두 줄 이 있 는 것 을 알 수 있 습 니 다. 첫 번 째 줄 과 세 번 째 줄 은 모두 포함 되 어 있 습 니 다.➜ grep -c aaa test
2
grep -e
명령 은 여러 개의 일치 하 는
관 계 를 실현 하 는 것 이다. 예 를 들 어 우 리 는 포함 aaaa
또는 bbbb
을 찾 으 려 면 첫 번 째 줄 과 두 번 째 줄 로 돌아 가 야 한다.➜ grep -e aaaa -e bbbb test
aaaa
bbbbbb
grep -F
명령 에 해당 하 는 것 은 fgrep
을 고정 문자열 로 보 는 것 이다.예 를 들 어 검색 pattern
을 가지 고 있 지 않 은 'aa*'
과 가지 고 있 지 않 은 것 은 다음 과 같다.➜ grep 'aa*' test
aaaa
AAAaaa
➜ grep -F 'aa*' test
두 번 째 는 볼 수 있 지만 찾 을 수 없습니다. 검색 한 것 은...
-F
이 문자열 은 정규 표현 식 이 아 닙 니 다.aa*
의 사용 방법 은 뒤에 있 는 이 파일 의 내용 을 grep -f
로 생각 하 는 것 이다.예 를 들 어 우리 에 게 파일 이 있 는데 이름 은 grep. txt 이 고 그 다음 내용 은 pattern
입 니 다. 사용 방법 은 다음 과 같 습 니 다.➜ grep -f grep.txt test
aaaa
AAAaaa
실제 와 같다
aa*
grep 'aa*' test
대소 문 자 를 무시 하 는 역할 을 한다.grep -i --ignore-case
일치 하 는 줄 번 호 를 표시 하 는 것 은 줄 번 호 를 더 표시 하 는 것 입 니 다. 자세히 말 할 필요 가 없습니다.grep -n
일치 하 는 문자열 만 표시 합 니까? 아니면 아까 grep -o
거 리 를 사용 합 니까? 이전에 표 시 된 것 은 모두 일치 하 는 문자 가 있 는 줄 입 니 다. 이 명령 은 일치 하 는 문자 만 표시 합 니 다.➜ grep -o 'aa*' test
aaaa
aaa
aa*
일치 하 는 결 과 를 인쇄 하지 않 습 니 다.방금 이것 을 보고 나 는 한참 동안 의 심 스 러 웠 는데, 너 에 게 문자열 을 검색 하 라 고 했 는데, 네가 나 에 게 결 과 를 주지 않 으 면 무슨 소 용이 있 니?그리고 일치 하 는 내용 이 있 으 면 즉시 상태 값 0 으로 돌아 가 는 튜 토리 얼 도 많다.그래서 보통 grep -q
스 크 립 트 에 쓰 인 다. shell
판단 안.if
일치 하지 않 는 줄 을 표시 합 니 다. grep -v
역방향 일치 에 해당 합 니 다. 가장 흔히 볼 수 있 는 것 은 스 레 드 를 찾 는 명령 에 사 용 됩 니 다. 가끔 인쇄 [^]
스 레 드 를 사용 합 니 다. 여기에 자신 을 제거 할 수 있 습 니 다.➜ ps -ef|grep Typora
501 91616 1 0 11 ?? 13:39.32 /Applications/Typora.app/Contents/MacOS/Typora
501 14814 93748 0 5:33 ttys002 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn Typora
➜ ps -ef|grep Typora|grep -v grep
501 91616 1 0 11 ?? 13:39.32 /Applications/Typora.app/Contents/MacOS/Typora
두 번 째 로 인쇄 되 지 않 은 것 을 볼 수 있 습 니 다
grep
스 레 드 자체grep
전체 단어 와 일치 합 니 다. grep -w
에 완전히 부합 되 는 한 번 만 일치 합 니 다.➜ grep aaa test
aaaa
AAAaaa
➜ grep -w aaa test
두 번 째 결 과 는 비어 있 는 것 을 볼 수 있다. 왜냐하면
pattern
라 는 단어 가 없 기 때문이다.정규 에 관 한 고급 용법 은 더 이상 깊이 연구 하지 않 고 다음 에 통일 적 으로 정리 할 것 이다.
sed
aaa
명령 의 역할 은 스 크 립 트 를 이용 하여 텍스트 파일 을 처리 하 는 것 이다.사용 방법:sed [-hnV][-e][-f<script >][ ]</code></pre>
<p><strong> </strong>:</p>
<ul>
<li><code>-e<script></code> <code>--expression=<script></code> <code>script</code> , <code>-e</code> , 。</li>
<li><code>-f<script ></code> <code>--file=<script ></code> <code>script</code> 。</li>
<li><code>-h</code> <code>--help</code> 。</li>
<li><code>-n</code> <code>--quiet</code> <code>--silent</code> <code>script</code> 。</li>
<li><code>-V</code> <code>--version</code> 。</li>
</ul>
<p><strong> </strong>:</p>
<ul>
<li>a: , a , ( )~</li>
<li>c: , c , n1,n2 !</li>
<li>d: , , d ;</li>
<li>i: , i , ( );</li>
<li>p: , 。 p sed -n ~</li>
<li>s: , s , 1,20s/old/new/g 。</li>
</ul>
<p> </p>
<p> , <code>test</code> , :</p>
<pre><code>➜ cat test
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test</code></pre>
<h1> </h1>
<p> <code>sed -e 3a
ewLine testfile</code> , <code>newLine</code> , 。 :</p>
<pre><code>➜ sed -e 3a
ewline test
HELLO LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
newline
Linux test</code></pre>
<p> , , , 。</p>
<p> a , Linux , :<code>sed -e /Linux/a
ewline test</code> 。 , 、 <code>Linux</code>, :</p>
<pre><code>➜ sed -e /Linux/a
ewline test
HELLO LINUX!
Linux is a free unix-type opterating system.
newline
This is a linux testfile!
Linux test
newline</code></pre>
<p> , 。</p>
<p><code>sed -e /Linux/a
ewline test</code> <code>sed "/Linux/a newline" test</code></p>
<h3> </h3>
<p> <code>a</code> ,<code>sed 3i
ewline test</code> <code>newline</code>:</p>
<pre><code>➜ sed 3i
ewline test
HELLO LINUX!
Linux is a free unix-type opterating system.
newline
This is a linux testfile!
Linux test</code></pre>
<p><code>sed /Linux/i
ewline test</code> <code>Linux</code> :</p>
<pre><code>➜ sed /Linux/i
ewline test
HELLO LINUX!
newline
Linux is a free unix-type opterating system.
This is a linux testfile!
newline
Linux test</code></pre>
<p> 。</p>
<h3> </h3>
<p> <code>d</code>, , , :</p>
<pre><code>➜ sed '/Linux/d' test
HELLO LINUX!
This is a linux testfile!</code></pre>
<p> 。</p>
<h3> </h3>
<p> , <code>c</code>。 :</p>
<pre><code>➜ sed '/Linux/c\Windows' test
HELLO LINUX!
Windows
This is a linux testfile!
Windows</code></pre>
<p> </p>
<p> <code>s</code>, , :<code>sed 's/old/new/g'</code> <code>old</code> ,<code>new</code> , :</p>
<pre><code>➜ sed 's/Linux/Windows/g' test
HELLO LINUX!
Windows is a free unix-type opterating system.
This is a linux testfile!
Windows test</code></pre>
<p> <code>s</code>, , :<code>sed 's/old/new/g'</code> <code>old</code> ,<code>new</code> , :</p>
<pre><code>➜ sed 's/Linux/Windows/g' test
HELLO LINUX!
Windows is a free unix-type opterating system.
This is a linux testfile!
Windows test</code></pre>
<p> <code>/g</code> , 。 :</p>
<p> </p>
<pre><code>➜ cat test2
aaaaaaaaaaa
bbbbbabbbbb
cccccaacccc</code></pre>
<p> <code>a</code> <code>A</code>, :</p>
<pre><code> sed 's/a/A/3g' test2
aaAAAAAAAAA
bbbbbabbbbb
cccccaacccc</code></pre>
<p> , <code>a</code> 。</p>
<p> <code>s</code> , , <code>/^/</code> <code>/$/</code> :</p>
<pre><code>➜ sed 's/^/###/g' test
###HELLO LINUX!
###Linux is a free unix-type opterating system.
###This is a linux testfile!
###Linux test
➜ sed 's/$/---/g' test
HELLO LINUX! ---
Linux is a free unix-type opterating system. ---
This is a linux testfile! ---
Linux test ---</code></pre>
<p> , :</p>
<ul>
<li><code>^</code> 。 :<code>/^#/</code> # 。</li>
<li><code>$</code> 。 :<code>/}$/</code> } 。</li>
<li><code>\<</code> 。 :`\ abc 。</li>
<li><code>\></code> 。 :<code>abc\></code> abc 。</li>
<li><code>.</code> 。</li>
<li><code>*</code> 0 。</li>
<li><code>[ ]</code> 。 :<code>[abc]</code> a b c, <code>[a-zA-Z]</code> 26 。 ^ , <code>[^a]</code> a </li>
</ul>
<p> , 。 ? <code>newline</code>, :</p>
<pre><code>➜ sed '1,2a
ewline' test
HELLO LINUX!
newline
Linux is a free unix-type opterating system.
newline
This is a linux testfile!
Linux test</code></pre>
<p> 。 , , <code>//</code> :</p>
<pre><code>➜ sed '/LINUX/,/linux/i\test' test
test
HELLO LINUX!
test
Linux is a free unix-type opterating system.
test
This is a linux testfile!
Linux test</code></pre>
<p> , <code>LINUX</code> , <code>linux</code> , 123 </p>
<p>, 。</p>
<h3> </h3>
<p><code>-e</code> , <code>sed</code> :</p>
<pre><code>➜ sed -e 's/Linux/Windows/g' -e 's/Windows/Mac OS/g' test
HELLO LINUX!
Mac OS is a free unix-type opterating system.
This is a linux testfile!
Mac OS test</code></pre>
<p> <code>Linux</code> <code>Windows</code>, <code>Windows</code> <code>Mac OS</code>。</p>
<h3> </h3>
<p> , 。 <code>> file</code> <code>-i</code> </p>
<h2>awk</h2>
<p>awk , grep ,sed ,awk , 。 awk , , 。</p>
<h3> </h3>
<pre><code>awk [ ] 'script' var=value file(s)
awk [ ] -f scriptfile var=value file(s)</code></pre>
<p> :</p>
<ul>
<li>-F fs or --field-separator fs ,fs , -F:。</li>
<li>-v var=value or --asign var=value 。</li>
<li>-f scripfile or --file scriptfile awk 。</li>
</ul>
<h3> </h3>
<p> <code>awk </code>。 <code>test</code>:</p>
<pre><code>➜ cat test
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo</code></pre>
<p> <code>awk '{print $1,$4}' test</code> :</p>
<pre><code>2 a
3 like
This's
10 orange,apple,mongo</code></pre>
<p> , 。 <code>$0</code> 。</p>
<p><code>awk -F</code> , tab :</p>
<pre><code>➜ awk -F, '{print $2}' test
apple</code></pre>
<p> , , <code>10 There are orange</code>、<code>apple</code> <code>mongo</code> , 。</p>
<p> :</p>
<pre><code>➜ awk -F '[ ,]' '{print $1,$2,$5}' test
2 this test
3 Are awk
This's a
10 There apple</code></pre>
<p> 。</p>
<p> , :</p>
<pre><code>➜ awk '/^This/' test
This's a test</code></pre>
<p> <code>This</code> 。</p>
<pre><code>➜ awk '$0 !~ /is/' test
3 Are you like awk
10 There are orange,apple,mongo</code></pre>
<p> <code>is</code> , 。</p>
<p> :<code>awk -f {awk } { }</code>, , 。</p>
<h3> </h3>
<p><code>awk</code> , <code>$NF</code> , 。</p>
<pre><code>➜ awk '{print $NF}' test
test
awk
test
orange,apple,mongo</code></pre>
<p> 。</p>
<p> :</p>
<ul>
<li><code>FILENAME</code>: </li>
<li><code>FS</code>: , 。</li>
<li><code>RS</code>: , , 。</li>
<li><code>OFS</code>: , , 。</li>
<li><code>ORS</code>: , , 。</li>
<li><code>OFMT</code>: , <code>%.6g</code>。</li>
</ul>
<h3> </h3>
<p><code>awk</code> , 。 :</p>
<ul>
<li><code>toupper()</code>: 。</li>
<li><code>tolower()</code>: 。</li>
<li><code>length()</code>: 。</li>
<li><code>substr()</code>: 。</li>
<li><code>sin()</code>: 。</li>
<li><code>cos()</code>: 。</li>
<li><code>sqrt()</code>: 。</li>
<li><code>rand()</code>: 。</li>
</ul>
<h3> </h3>
<p><code>awk</code> , 。 :</p>
<pre><code>awk ' ' </code></pre>
<p> , , , :</p>
<pre><code>➜ awk -F, '$2!="" {print $2}' test
apple</code></pre>
<p> <code>apple</code> 。</p>
<h3>if </h3>
<p><code>awk</code> <code>if</code> , 。 :</p>
<pre><code>➜ awk '{if ($2 > "t") print $1}' test
2</code></pre>
<p> </p>
<p> : , <code>t</code>, 。 unicode 。</p>
<p> , , , , 。</p>
<p> :</p>
<p>linux sed https://www.runoob.com/linux/linux-comm-sed.html</p>
<p>awk :https://www.runoob.com/linux/linux-comm-awk.html</p>
<p>awk :http://www.ruanyifeng.com/blog/2018/11/awk.html</p>
<p> </p>
<p> </p>
</div>
</div>
</div>
</div>
</div>
<!--PC WAP -->
<div id="SOHUCS" sid="1288483542698893312"></div>
<script type="text/javascript" src="/views/front/js/chanyan.js">
이 가능 하 다, ~ 할 수 있다,...비상 조끼
java enum annotation
bit1129
scala
dalan_123
Web
주 범 양
linux crontab unix
g21121
session
A 씨 는 괴 롭 히 지 않 는 다
Web finereport 총결산
담 위의 풀 한 포기.
linux shell jar
aijuans
봄 3 시리즈
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 기타
첫 페이지 -
우리 -
역 내 검색 -
Sitemap -
권리 침해 신고
모든 IT 지식 창고 저작권© 2000 - 2050 IT 지식 창고 IT610. com, 판권 소유.
경 ICP 비 09083238 호
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.