sed命令
sed本身也是個管道命令,可以將數據進行替換,刪除,新增,選取特定行等功能。
sed [-nefr] [動作]
參數
?-n: 使用安靜模式,在一般的sed用法中,所有STDIN的數據都會列出到屏幕上,但是加上-n只有sed特殊處理的那一行才會顯示
?-e:直接在命令模式上進行sed的動作編輯
?-f:直接將sed的動作寫在一個文件內, -f filename 則可以執(zhí)行filename內的sed動作
?-r:sed的動作支持擴展正則表達式的語法
?-i:直接修改讀取的文件的內容,而不是由屏幕輸出。
動作說明:
[n1,[n2]] function
function的參數:
a:后面可以接字符串,這些字符串會出現在新的一行,目前的下一行
c:替換,替換n1:n2之間的行
d:刪除
i:插入,出現在目前的上一行,和a相反。
p:打印
s:替換可以直接接替換的工作,通常這個s的動作可以搭配正則表達式,例如 1,20s/old/new/g
看命令猜測意思:
nl a.txt | sed '2,5d' 打印passwd內容,顯示行號,刪除2到5行。
nl a.txt| sed '2a drink tea ' 在第二行后(第三行)加drink tea?
插入多行:
每一行都要以 ‘’結尾是關鍵
顯示特定的行
將2到4的內容替換為no number
這是在文本最后一行 加入 文本
替換最后的d 為hello
awk
awk 是數據處理工具,sed 是常常對一行進行處理,但是awk經常是對一行里面分成字段來處理。
運行模式:awk '條件類型1{動作1}條件類型2{動作2}}...‘ filename
awk主要是處理每一行的字段內的數據,默認的字段的分隔符為空格鍵,或者tab鍵。
選取第一列和第三列
操作順序是:
讀入第一行,并將第一行的數據填入$0,$1,$2 . ? $0代表的是第一行數據的意思
依據條件類型的限制,判斷是否需要進行后面的操作
做完所有的動作與條件類型
若還有后續(xù)的行的數據,會重復1-3的步驟,直道所有的數據都會讀完。
判斷行和列的變量
NF:每一行$0擁有的字段總數
NR:目前awk所處理的是第幾行數據
FS:目前分隔符,默認是空格鍵
這些都是內置變量。
awk的后續(xù)動作是 單引號括住的,所以動作里面的print要打印是包含非變量部分用 雙引號定義出來。
awk也有一些邏輯運算符,和C語言一樣。
第三段是UID,選擇第三列10以下的數據,并且僅僅列出帳號和第三列。第三列是UID
上面沒有顯示第一個,因為默認的情況下還是以空格或者tab分開的,所以這個用了BEGIN 關鍵字
awk的統(tǒng)計功能,利用了內置變量NR 判斷





