歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 玩轉Linux命令之三劍客

玩轉Linux命令之三劍客

日期:2017/3/1 12:14:53   编辑:關於Linux

1 grep命令

功能說明
grep(Global Regular Expression Print)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。其格式如下
grep[選項]pattern file

grep命令的選項及其說明如下

選項 說明 -v 過濾指定字符串內容的行 -i 不區分大小寫 -E 過濾多個字符串 -o 輸出多個精確匹配的字符,而不是整行

使用案例

[root@tony data]# vim teach.txt #創建測試數據(編輯測試數據內容)
Program language
Java
C
C++
PHP
Python
Ruby

OS
Windows
windows
Linux
Mac
Unix
Android
IOS

過濾掉指定的字符串(“windows”)匹配的行並忽略大小寫後將結果輸出

[root@tony data]# grep -vi 'windows' teach.txt #忽略大小寫並過濾包含Windows字符串的行

Program language
Java
C
C++
PHP
Python
Ruby

OS
Linux
Mac
Unix
Android
IOS

過濾掉多個匹配字符串內容(‘Android|IOS’)的行並將結果輸出

[root@tony data]# grep -vE 'Android|IOS' teach.txt  #過濾Android和IOS字符串對應的行

Program language
Java
C
C++
PHP
Python
Ruby

OS
Windows
windows
Linux
Mac
Unix

查找指定的進程

[guanglei@tony data]$ ps -ef|grep ssh #查找SSH遠程加密連接的進程
root       1403      1  0 09:54 ?        00:00:00 /usr/sbin/sshd
root       1509   1403  0 10:00 ?        00:00:00 sshd: guanglei [priv]
guanglei   1511   1509  0 10:00 ?        00:00:00 sshd: guanglei@pts/1
guanglei   1654   1512  0 10:21 pts/1    00:00:00 grep ssh

2 sed命令

功能說明
sed主要用來編輯文件,簡化對文件的反復操作,編寫轉換程序等,擅長取行。其格式如下
sed [選項] [n1,[n2]][function],n1,n2表示選擇行數的區間

選項 說明 -n 取消默認輸出 -i 改變文件內容

fuction:
d:刪除
i:插入
p:打印
s:替換

使用案例

查找匹配字符串內容的行

[root@tony data]# sed -n '/J/p' teach.txt  #匹配指定字符串的行   
Java

刪除匹配字符串內容的行

[root@tony data]# sed -i '/Python/d' teach.txt        
[root@tony data]# cat teach.txt 

Program language
Java
C
C++
PHP
Ruby

OS
Windows
windows
Linux
Mac
Unix
Android
IOS
[root@tony data]# 

實現文件內容的替換

[root@tony data]# sed -i 's#Android#android6.0#g' teach.txt  #將Android替換成Android6.0
[root@tony data]# cat teach.txt 

Program language
Java
C
C++
PHP
Ruby

OS
Windows
windows
Linux
Mac
Unix
android6.0
IOS

實現指定文件內容的查找並替換

[root@tony data]# mkdir -p  grandparent/parent/son #創建三級目錄
[root@tony data]# tree #查看目錄樹結構
.
├── grandparent
│   ├── parent
│   │   ├── son
│   │   │   └── test.txt
│   │   └── test.txt
│   └── test.txt
└── teach.txt
[root@tony data]# echo "This is Linux Operator System" >grandparent/test.txt #創建測試數據
[root@tony data]#  echo "This is Linux Operator System" >grandparent/parent/test.txt
[root@tony data]#  echo "This is Linux Operator System" >grandparent/parent/son/test.txt

[root@tony data]# find ./ -type f -name "test.txt"|xargs sed -i 's#Linux#Unix#g' #將匹配的文件內容字符串轉換為Unix

[root@tony data]# cat grandparent/test.txt #查看修改結果
This is Unix Operator System

獲取指定區間行數的內容

[root@tony data]# sed -n '2,5p' teach.txt 
Program language
Java
C
C++

3 awk命令

awk是一種程序設計語言,允許創建簡短的程序,這些程序讀取輸入文件,為數據排序,處理數據,對輸入執行計算以及生成報表。其格式如下

awk ‘{pattern +action}’ {fileNames}

選項 說明 -F 指定分割的內容

內置變量
NR: 表示行號

使用案例

使用awk實現獲取指定區間的內容

[root@tony data]# awk '{if(NR<5&&NR>=2)printf $1 "\n"}' teach.txt  
Program
Java
C
Copyright © Linux教程網 All Rights Reserved