常用的linux命令-- 文本搜索、編輯(grep、sed、awd)

grep

global search regular expression(RE) and print out the line全面搜索正則表達式並把行打印出來 ,搜索內容是文本。

參數 說明 舉例
-a 不忽略二進制數據
-A<顯示列數i> 顯示查到數據之後的行數i數據 grep -A2 “;$”
-b 顯示符合範本樣式的一行外,顯示改行之前的內容
-c 計算符合範本樣式的列數
-C<顯示列數> 除了顯示內容之外,顯示該列前後的內容
-d<進行動作> 當查找的內容爲目錄而非文件時 必須使用該參數
-e<範本樣式> 指定字符串爲查找文件內容的範本樣式
-E 使用擴展正則表達式
-f<範本文件> 指定範本文件,其內容有一個或多個範本樣式,讓grep查找符合範本條件的文件內容,格式爲每一列的範本樣式
-F 將範本樣式視爲固定字符串的列表
-G 將範本樣式視爲普通的表示法來使用
-h 在顯示符合範本樣式的那一列之前,不標示該列所屬的文件名稱
-H 在顯示符合範本樣式的那一列之前,標示該列的文件名稱
-i 忽略字符大小寫的差別
-l 列出文件內容符合指定的範本樣式的文件名稱
-L 列出文件內容不符合指定的範本樣式的文件名稱
-n 顯示符合範本樣式的那一列之前,表示出該列的編號
-q 不顯示任何信息
-r/R 此參數的效果和指定“-d recurse”參數相同
-s 不顯示錯誤信息
-v 翻轉查找
-w 只顯示全字符符合的列
-x 只顯示全列符合的列
-y 參數效果與-i相同
-o 只輸出文件中匹配到的部分

sed

stream editor文本流編輯,sed是一個非交互式的面向字符流的編輯器。

sed使用參數:

參數 說明
-n 一般所有數據會輸出到終端,現在只有經過一行會出現
-e 直接在命令列模式上進行sed的動作編輯
-f 直接將sed的動作寫入一個文件內
-r sed動作支持的是延伸性正規表示法的語法
-i 直接修改該讀取的文件內容,而不是輸出到終端

動作:

參數 說明 使用
a 新增 sed ‘2a Drink tea’
c 取代 sed ‘2,5c No 2-5 number’
d 刪除 sed ‘2,5d’
i 插入 sed ‘2i Drink tea’
p 列印 sed ‘2,5p’
s 取代 sed ‘s/old/new/p’

其他使用

  • 數據的搜索和顯示
    nl testFile | sed ‘/searchStr/p’
  • 數據的搜索並刪除
    nl testFile | sed ‘/searchStr/d’
  • 數據搜索並執行命令
    nl testFile | sed ‘/searchStr/{ s/searchStr/replaceStr/;p}’
  • 數據搜索並執行命令並退出
    nl testFile | sed ‘/searchStr/{ s/searchStr/replaceStr/;p;q}’
  • 數據的搜索並替換
    sed ‘s/searchStr/replaceStr/g’
  • 多點編輯
    刪除並查找 ,中間命令使用”-e”連接
    nl testFile | sed -e ‘3.5d’ -e ‘s/searchStr/replaceStr/’

awk

與sed相同都是對文件進行逐行處理。
強大的文本分析工具 ,相對於grep的查找 ,sed的編輯 ,awk在堆數據分析並生成報告是,顯的尤爲強大 ,awk就是把文件逐行讀入 ,以空格爲默認分隔符,之後將切開的部分在進行各種分析處理。

一般使用

awk -F: ‘{print “hello”}’

添加列名稱

last -5 | awk -F: ‘BEGIN {print “name \t,shell”} {print $1} END {print “blue\t,/bin/nosh”}’

sub函數

awk下gsub函數
sub、gsub函數返回的是執行替換或其他匹配操作的次數而不是改行執行結果。這裏的sub/gsub函數中傳入參數相當於sed命令的字符串端的內容以及寫法。

awk內置的一些變量

變量名稱 說明
ARGC 命令行參數個數
ARGV 命令行參數排列
ENVIRON 支持隊列中系統環境變量的使用
FILENAME awk瀏覽的文件名
FRN 瀏覽文件的記錄數
FS 設置輸入域分隔符 ,等價於命令行 -F選項
NF 瀏覽記錄的域的個數
NR 已讀的記錄數
OFS 輸出域分隔符
ORS 輸出記錄分隔符
RS 控制記錄分隔符

0 1。。。。
也可使用printf()進行打印輸出,

awk編程:
可以將awk作爲可執行文件來編輯 ,執行。
awk文件中的語法:

  • 變量和賦值 :不需要聲明 ,有初始值,但仍需初始化
  • 條件語句:與c格式相似 。如:
if (expression) {
    statement;
    statement;
    ... ...
}

if (expression) {
    statement;
} else {
    statement2;
}

if (expression) {
    statement1;
} else if (expression1) {
    statement2;
} else {
    statement3;
}
  • 循環語句
    同樣與c語言一致
  • 數組
    下標可以爲數字和字符串,同樣不需要聲明,不需要初始化 ,會存儲在hash表中 ,並不會順序存儲。相當於oc字典
    The GNU Awk User’s Guide

cut命令

文件內容查看
:該命令有兩項功能,其一是用來顯示文件的內容,它依次讀取由參數file所指 明的文件,將它們的內容輸出到標準輸出上;其二是連接兩個或多個文件,如cut fl f2 > f3將把文件fl和幾的內容合併起來,然後通過輸出重定向符“>”的作用,將它們放入文件f3中。

-b:僅顯示行中指定直接範圍的內容; 
-c:僅顯示行中指定範圍的字符; 
-d:指定字段的分隔符,默認的字段分隔符爲“TAB”; 
-f:顯示指定字段的內容; 
-n:與“-b”選項連用,不分割多字節字符; 
--complement:補足被選擇的字節、字符或字段; 
--out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符; 
--help:顯示指令的幫助信息; 
--version:顯示指令的版本信息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章